none
Trigger (Disparadores) RRS feed

  • Pregunta

  • Buenos días. Tengo una base de datos de una zapatería. Lo que quiero hacer es que cuando se actualicen los precios se ejecute un trigger y se guarde el IDEjemplar del cual se actualizó el precio, la fecha en que se realizo el cambio de precio, el precio anterior y el precio nuevo en una tabla "Historial de precios". Desde ya muchas gracias. Saludos.

    

    martes, 7 de noviembre de 2017 14:30

Respuestas

  • Consulta las pseudo-tablas inserted y deleted para recuperar los datos "anteriores" y "actuales", por ejemplo:

    CREATE TRIGGER dbo.TriggerName
        ON dbo.Zapateria
        AFTER UPDATE
    AS
    BEGIN
        SET NOCOUNT ON;
        INSERT INTO dbo.HistorialPrecios
    	   (idEjemplar, Fecha, PrecioAnterior, PrecioNuevo)
        SELECT
    	   i.idEjemplar, GETDATE(), d.Precio, i.Precio
        FROM
    	   inserted i 
    	   INNER JOIN deleted d ON i.idEjemplar = d.idEjemplar
    		  AND i.Precio <> d.Precio
    END
    GO

    martes, 7 de noviembre de 2017 15:58

Todas las respuestas

  • Saludos:

    Te paso el link que te explica claramente como hacerlo:

    https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    martes, 7 de noviembre de 2017 15:09
  • Consulta las pseudo-tablas inserted y deleted para recuperar los datos "anteriores" y "actuales", por ejemplo:

    CREATE TRIGGER dbo.TriggerName
        ON dbo.Zapateria
        AFTER UPDATE
    AS
    BEGIN
        SET NOCOUNT ON;
        INSERT INTO dbo.HistorialPrecios
    	   (idEjemplar, Fecha, PrecioAnterior, PrecioNuevo)
        SELECT
    	   i.idEjemplar, GETDATE(), d.Precio, i.Precio
        FROM
    	   inserted i 
    	   INNER JOIN deleted d ON i.idEjemplar = d.idEjemplar
    		  AND i.Precio <> d.Precio
    END
    GO

    martes, 7 de noviembre de 2017 15:58