Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2015, 06:55
Angel_Nemo
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Activar Trigger con un valor Especifico en Update

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
  1. --La tabla en la que tendre los registros:
  2. CREATE TABLE [dbo].[facturas](
  3.     [num_factura] [nvarchar](20) NULL,
  4.     [fecha] [datetime] NULL,
  5.     [monto] [DECIMAL](18, 2) NULL,
  6.     [estado] [nvarchar](10) NULL
  7. ) ON [PRIMARY]
  8.  
  9.  
  10. --La tabla a la que pasaré los registros QUE CUMPLAN LA CONDICION
  11. CREATE TABLE [dbo].[factu_Trig](
  12.     [num_factura] [nvarchar](20) NULL,
  13.     [fecha] [datetime] NULL,
  14.     [monto] [NUMERIC](18, 2) NULL,
  15.     [estado] [nvarchar](10) NULL
  16. ) 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
  1. CREATE TRIGGER Validar1
  2.  ON Facturas
  3.  after UPDATE
  4.  AS
  5.  IF UPDATE(estado)
  6.    BEGIN
  7.          DECLARE @num_factura nvarchar(20)
  8.      DECLARE @fecha  datetime
  9.      DECLARE @monto NUMERIC(18,2)
  10.      DECLARE @estado nvarchar(10)
  11.      
  12.      IF @estado = 'ingreso'
  13.          BEGIN
  14.           INSERT INTO factu_trig    (
  15.                         num_factura,
  16.                         fecha,
  17.                         monto,
  18.                         estado)
  19.                         SELECT
  20.                         num_factura,
  21.                         fecha,
  22.                         monto,
  23.                         estado
  24.                         FROM facturas
  25.                         WHERE estado = @estado    
  26.         print ('registro agregado')
  27.         END
  28.  
  29.     ELSE
  30.         BEGIN
  31.                 raiserror('registro NO agregado', 10, 1) --mensaje de error
  32.                 ROLLBACK TRANSACTION
  33.         END
  34.    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

Última edición por gnzsoloyo; 11/02/2015 a las 07:19 Razón: Muy MAL etiquetado. usar HGHLIGHT SQL, por favor.