SQL - error con Trigger - haber quien lo arregla xD!!!

 
Vista:

error con Trigger - haber quien lo arregla xD!!!

Publicado por Juanjo (1 intervención) el 30/10/2008 23:59:17
hola gente del foro xD!!!
estaba intentando en al BD nordwind la siguiente sentencia, cuando insertar un registro con el codigo del producto repetido quiero q se actulice solo la cantidad del producto en la tabla [Order Details] hasta aqui todo bien, pero primero hay q insertar esto

insert into Orders (CustomerID,EmployeeID) values ('ALFKI',2) -- donde ORDERID es 11080 (es el valor por defecto q sigue en la BD )

DECLARE @ORDERID INT, @PCTO INT, @REP INT,
@UnitPrice MONEY, @QuantityNUEVA SMALLINT, @QuantityANTIGUA SMALLINT, @Discount REAL
SET @ORDERID = 11080
SET @PCTO = 5
SET @UnitPrice = 200
SET @QuantityNUEVA = 10
SET @QuantityANTIGUA = ( SELECT Quantity FROM [Order Details]
WHERE OrderID = @ORDERID AND ProductID = @PCTO)
SET @Discount = 0
SET @REP = ( SELECT COUNT(*) FROM [Order Details]
WHERE OrderID = @ORDERID AND ProductID = @PCTO)
IF @REP = 1
BEGIN
UPDATE [Order Details] SET Quantity = (@QuantityANTIGUA + @QuantityNUEVA)
WHERE OrderID = @ORDERID AND ProductID = @PCTO
END

IF @REP = 0
BEGIN
INSERT [Order Details] (OrderID,ProductID,UnitPrice,Quantity,Discount)
VALUES (@ORDERID,@PCTO,@UnitPrice,@QuantityNUEVA,@Discount)
END

SELECT * FROM [Order Details] WHERE OrderID = 11080
SELECT * FROM dbo.Orders WHERE OrderID = 11080

/*******************************************************************************************
bien ahora el problema es q eh trato de pasar esto a un trigger , aqui ta el ejemplo
*********************************************************************************************/

ALTER TRIGGER ACTUALIZA_CANT_PCTO
ON [Order Details] FOR INSERT AS
DECLARE @ORDERID INT, @PCTO INT, @REP INT,
@UnitPrice MONEY, @QuantityNUEVA SMALLINT,
@QuantityANTIGUA SMALLINT, @Discount REAL
SELECT @ORDERID = I.OrderID,
@PCTO = I.ProductID,
@UnitPrice = I.UnitPrice,
@QuantityNUEVA = I.Quantity,
@Discount = I.Discount
FROM INSERTED AS I
SET @QuantityANTIGUA = (SELECT Quantity FROM [Order Details]
WHERE OrderID = @ORDERID AND ProductID = @PCTO)
SET @REP = ( SELECT COUNT(*) FROM [Order Details]
WHERE OrderID = @ORDERID AND
ProductID = @PCTO)
IF @REP = 1
BEGIN
UPDATE [Order Details] SET Quantity = (@QuantityNUEVA + @QuantityANTIGUA)
WHERE OrderID = @ORDERID AND ProductID = @PCTO
END
IF @REP = 0
BEGIN
INSERT [Order Details] (OrderID,ProductID,UnitPrice,Quantity,Discount)
VALUES (@ORDERID,@PCTO,@UnitPrice,@QuantityNUEVA,@Discount)
END

/*******************************************************************************************
el problema me sale es q al insertar un registro nuevo me sale q no puedo insertar registros duplicados, y el otro poblema es q al insertar el primer registro me da como resultado q la cantiad q puse no es uno (1) si no (2) es decir se duplica

INSERT [Order Details] (OrderID,ProductID,UnitPrice,Quantity,Discount)
VALUES (11080,1,100,1,0)
SELECT * FROM [Order Details] WHERE OrderID = 11080
*********************************************************************************************/

haber quien me da una manito , cualquier ayuda o idea 100 ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:error con Trigger - haber quien lo arregla xD!!

Publicado por Leopoldo Taylhardat (93 intervenciones) el 31/10/2008 14:58:26
Saludos...
Por lo que entiendo que quieres hacer...
Aplica que primero buscar si existe ... si existe actualizas... si no existe lo creas...

IF exists (select.... where...) then
Update ....
Else
insert into....
END IF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar