Crear Update Trigger en SQL
Estoy utilizando SQL Express 2005.
Tengo un desencadenante que se llama "Paquetes.Insertar" en la tabla "DetallePedido" y éste funciona bien agregando los registros correspondientes en la tabla DetallePaquetePedido", el código es el siguiente:
CREATE TRIGGER [dbo].[Paquetes.Insertar] ON [dbo].[detallepedido]FOR INSERT AS DECLARE @IdDetalle int, @IdPaquete int, @Cantidad Int
SET @IdDetalle = (SELECT IdDetallePed FROM inserted)
SET @IdPaquete = (SELECT IdArticulo FROM Inserted)
SET @Cantidad = (SELECT Cantidad FROM Inserted)
INSERT INTO dbo.DetallePaquetesPedidos (IdDetalle,IdPaquete,IdArticulo,Cantidad) SELECT @IdDetalle AS IdDetalle, @IdPaquete AS IdPaquete, idarticulo, cantidad * @Cantidad AS Cantidad FROM detallecatarticulos WHERE (idpadre = @IdPaquete)
Estoy intentando crear otro desencadenante que se llame "Paquetes.Actualizar" y el código es el siguiente:
CREATE TRIGGER [dbo].[Paquetes.Actualizar] ON [dbo].[detallepedido] FOR UPDATE
AS
DECLARE @IdDetalleDel int,@IdDetalleIns int, @IdPaquete int, @Cantidad Int
SET @IdDetalleDel = (SELECT IdDetallePed FROM Deleted)
DELETE FROM dbo.DetallePaquetesPedidos WHERE (IdDetalle = @IdDetalleDel)
GO
SET @IdDetalleIns = (SELECT IdDetallePed FROM Inserted)
SET @IdPaquete = (SELECT IdArticulo FROM Inserted)
SET @Cantidad = (SELECT Cantidad FROM Inserted)
INSERT INTO dbo.DetallePaquetesPedidos (IdDetalle,IdPaquete,IdArticulo,Cantidad) SELECT @IdDetalleIns AS IdDetalle, @IdPaquete AS IdPaquete, idarticulo, cantidad * @Cantidad AS Cantidad FROM dbo.detallecatarticulos WHERE (idpadre = @IdPaquete)
GO
Pero me marca los siguientes errores:
Mens. 137, Nivel 15, Estado 1, Lnea 2
Debe declarar la variable escalar "@IdDetalleIns".
Mens. 137, Nivel 15, Estado 1, Lnea 3
Debe declarar la variable escalar "@IdPaquete".
Mens. 137, Nivel 15, Estado 1, Lnea 4
Debe declarar la variable escalar "@Cantidad".
Mens. 137, Nivel 15, Estado 2, Lnea 6
Debe declarar la variable escalar "@IdDetalleIns".
¿Por qué me marca estos errores? Y ¿Cuál es el código correcto?
De antemano gracias.
Tengo un desencadenante que se llama "Paquetes.Insertar" en la tabla "DetallePedido" y éste funciona bien agregando los registros correspondientes en la tabla DetallePaquetePedido", el código es el siguiente:
CREATE TRIGGER [dbo].[Paquetes.Insertar] ON [dbo].[detallepedido]FOR INSERT AS DECLARE @IdDetalle int, @IdPaquete int, @Cantidad Int
SET @IdDetalle = (SELECT IdDetallePed FROM inserted)
SET @IdPaquete = (SELECT IdArticulo FROM Inserted)
SET @Cantidad = (SELECT Cantidad FROM Inserted)
INSERT INTO dbo.DetallePaquetesPedidos (IdDetalle,IdPaquete,IdArticulo,Cantidad) SELECT @IdDetalle AS IdDetalle, @IdPaquete AS IdPaquete, idarticulo, cantidad * @Cantidad AS Cantidad FROM detallecatarticulos WHERE (idpadre = @IdPaquete)
Estoy intentando crear otro desencadenante que se llame "Paquetes.Actualizar" y el código es el siguiente:
CREATE TRIGGER [dbo].[Paquetes.Actualizar] ON [dbo].[detallepedido] FOR UPDATE
AS
DECLARE @IdDetalleDel int,@IdDetalleIns int, @IdPaquete int, @Cantidad Int
SET @IdDetalleDel = (SELECT IdDetallePed FROM Deleted)
DELETE FROM dbo.DetallePaquetesPedidos WHERE (IdDetalle = @IdDetalleDel)
GO
SET @IdDetalleIns = (SELECT IdDetallePed FROM Inserted)
SET @IdPaquete = (SELECT IdArticulo FROM Inserted)
SET @Cantidad = (SELECT Cantidad FROM Inserted)
INSERT INTO dbo.DetallePaquetesPedidos (IdDetalle,IdPaquete,IdArticulo,Cantidad) SELECT @IdDetalleIns AS IdDetalle, @IdPaquete AS IdPaquete, idarticulo, cantidad * @Cantidad AS Cantidad FROM dbo.detallecatarticulos WHERE (idpadre = @IdPaquete)
GO
Pero me marca los siguientes errores:
Mens. 137, Nivel 15, Estado 1, Lnea 2
Debe declarar la variable escalar "@IdDetalleIns".
Mens. 137, Nivel 15, Estado 1, Lnea 3
Debe declarar la variable escalar "@IdPaquete".
Mens. 137, Nivel 15, Estado 1, Lnea 4
Debe declarar la variable escalar "@Cantidad".
Mens. 137, Nivel 15, Estado 2, Lnea 6
Debe declarar la variable escalar "@IdDetalleIns".
¿Por qué me marca estos errores? Y ¿Cuál es el código correcto?
De antemano gracias.
{"Lat":20.5710818935082,"Lng":-100.4150390625}
1 respuesta
Respuesta de googer
1