Hola gente del foro, espero me puedan ayudar.
No he hecho un triggers, pero lo que requiero es que al actualizar un campo en una tabla poniendole un valor de texto determinado, el registro completo de ese campo debe pasar o copiarse a otra tabla.
Para este ejemplo he creado 2 tablas de prueba, antes de pasar a la aplicacion real:
Código SQL:
Ver original--La tabla en la que tendre los registros:
CREATE TABLE [dbo].[facturas](
[num_factura] [nvarchar](20) NULL,
[fecha] [datetime] NULL,
[monto] [DECIMAL](18, 2) NULL,
[estado] [nvarchar](10) NULL
) ON [PRIMARY]
--La tabla a la que pasaré los registros QUE CUMPLAN LA CONDICION
CREATE TABLE [dbo].[factu_Trig](
[num_factura] [nvarchar](20) NULL,
[fecha] [datetime] NULL,
[monto] [NUMERIC](18, 2) NULL,
[estado] [nvarchar](10) NULL
) ON [PRIMARY]
Ahora La Condicion es que si el estado de un registro es actualizado con el valor 'ingreso', dicho registro sea copiado a la 2da tabla. Por lo tanto estoy realizando el siguiente trigger:
Código SQL:
Ver originalCREATE TRIGGER Validar1
ON Facturas
after UPDATE
AS
IF UPDATE(estado)
BEGIN
DECLARE @num_factura nvarchar(20)
DECLARE @fecha datetime
DECLARE @monto NUMERIC(18,2)
DECLARE @estado nvarchar(10)
IF @estado = 'ingreso'
BEGIN
INSERT INTO factu_trig (
num_factura,
fecha,
monto,
estado)
SELECT
num_factura,
fecha,
monto,
estado
FROM facturas
WHERE estado = @estado
print ('registro agregado')
END
ELSE
BEGIN
raiserror('registro NO agregado', 10, 1) --mensaje de error
ROLLBACK TRANSACTION
END
END
Pero no logro que copie los registros, al parecer nunca cumple la condición.
Por favor, si alguien tiene alguna sugerencia o consejo, o sabe que puedo corregir, le quedaria muy agradecido.
Saludos