Ayuda con Trigger

28/10/2004 - 22:07 por Gustavo Venturo | Informe spam
Hola a todos, tengo la siguiente tabla
Tabla1
idReq (AUTONUMERICO, Clave)
idMat INT,
Marca NVARCHAR(70)
Color NVARCHAR(20)
Prov1 NVARCHAR(10)
Precio1 MONEY
Prov2 NVARCHAR(10)
Precio2 MONEY
Prov3 NVARCHAR(10)
Precio3 MONEY
VBObra BIT
Necesito crear un Trigger que me permita en caso de ingresar y/o editar un
insumo ya existente en la tabla (idMat, Marca, Color), me asigne el ultimo
Prov1, Precio1, Prov2, Precio2, Prov3, Precio3 asignado a ese insumo.

He Intentado con este trigger, pero no me resulta y no se como resolver el
caso de que se inserte un nuevo registro

CREATE TRIGGER CompletarPrecios ON [dbo].[tblLogistica1]
FOR UPDATE

AS
DECLARE @Prov1 NVARCHAR(10)
DECLARE @Prov2 NVARCHAR(10)
DECLARE @Prov3 NVARCHAR(10)
DECLARE @Precio1 MONEY
DECLARE @Precio2 MONEY
DECLARE @Precio3 MONEY
DECLARE @idMat INT
DECLARE @Marca NVARCHAR(70)
DECLARE @Color NVARCHAR(20)
DECLARE @idReq INT

SELECT @idReq=idReq, @idMat=idMaterial, @Marca=Marca,
@Color=Color FROM Inserted
SELECT TOP 1 @Prov1=Prov1, @Precio1=Precio1, @Prov2=Prov2, @Precio2 Precio2, @Prov3=Prov3, @Precio3=Precio3, @Prov4=Prov4, @Precio4=Precio4
FROM tblLogistica1 WHERE idMat=@idmat AND
Marca=@Marca AND Color=@Color AND idReq<>@idReq ORDER BY idReq DESC
IF @Precio1 IS NULL
set @Precio1=0
IF @Precio2 IS NULL
set @Precio2=0
IF @Precio3 IS NULL
set @Precio3=0
IF @Precio4 IS NULL
set @Precio4=0

IF UPDATE(VBObra)
BEGIN
UPDATE tblLogistica1 SET Prov1=@Prov1, Precio1=@Precio1, Prov2=@Prov2,
Precio2=@Precio2,
Prov3=@Prov3, Precio3=@Precio3 WHERE idReq=@idReq
END


Gracias por los aportes
 

Leer las respuestas

#1 Maxi
28/10/2004 - 22:14 | Informe spam
gustavo, lo que quieres hacer lo deberias hacer con un Trigger del tipo
"Instead Of" En lugar de

De todas formas quedia medio feo este tipo de diseños!! porque permites la
duplicacion de registros?

Si es una tabla de movimientos donde se necesita por movimiento que se
ingrese el precio de compra del maestro!! podrias implementar un default y
en ese poner una UDF

O mejor en tus SP del CRUD meter la logica :-)


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Gustavo Venturo" <gventuro@ quita esto vain-arm.cl> escribió en el mensaje
news:OL4v%
Hola a todos, tengo la siguiente tabla
Tabla1
idReq (AUTONUMERICO, Clave)
idMat INT,
Marca NVARCHAR(70)
Color NVARCHAR(20)
Prov1 NVARCHAR(10)
Precio1 MONEY
Prov2 NVARCHAR(10)
Precio2 MONEY
Prov3 NVARCHAR(10)
Precio3 MONEY
VBObra BIT
Necesito crear un Trigger que me permita en caso de ingresar y/o editar un
insumo ya existente en la tabla (idMat, Marca, Color), me asigne el ultimo
Prov1, Precio1, Prov2, Precio2, Prov3, Precio3 asignado a ese insumo.

He Intentado con este trigger, pero no me resulta y no se como resolver el
caso de que se inserte un nuevo registro

CREATE TRIGGER CompletarPrecios ON [dbo].[tblLogistica1]
FOR UPDATE

AS
DECLARE @Prov1 NVARCHAR(10)
DECLARE @Prov2 NVARCHAR(10)
DECLARE @Prov3 NVARCHAR(10)
DECLARE @Precio1 MONEY
DECLARE @Precio2 MONEY
DECLARE @Precio3 MONEY
DECLARE @idMat INT
DECLARE @Marca NVARCHAR(70)
DECLARE @Color NVARCHAR(20)
DECLARE @idReq INT

SELECT @idReq=idReq, @idMat=idMaterial, @Marca=Marca,
@Color=Color FROM Inserted
SELECT TOP 1 @Prov1=Prov1, @Precio1=Precio1, @Prov2=Prov2, @Precio2> Precio2, @Prov3=Prov3, @Precio3=Precio3, @Prov4=Prov4, @Precio4=Precio4
FROM tblLogistica1 WHERE idMat=@idmat AND
Marca=@Marca AND Color=@Color AND idReq<>@idReq ORDER BY idReq DESC
IF @Precio1 IS NULL
set @Precio1=0
IF @Precio2 IS NULL
set @Precio2=0
IF @Precio3 IS NULL
set @Precio3=0
IF @Precio4 IS NULL
set @Precio4=0

IF UPDATE(VBObra)
BEGIN
UPDATE tblLogistica1 SET Prov1=@Prov1, Precio1=@Precio1, Prov2=@Prov2,
Precio2=@Precio2,
Prov3=@Prov3, Precio3=@Precio3 WHERE idReq=@idReq
END


Gracias por los aportes







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.781 / Virus Database: 527 - Release Date: 21/10/2004

Preguntas similares