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 original
CREATE 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