sql >> Databáze >  >> RDS >> Sqlserver

Porovnejte odstraněnou a vloženou tabulku v SQL Server 2008

Nejsem si úplně jistý, co je vaším cílem, myslím, že by to mohlo být něco takového. Řekněme, že máme tabulku jako je tato:

CREATE TABLE Product
(
     ID      INT                   PRIMARY KEY,
     Name    NVARCHAR(100)         NOT NULL,
     Price   DECIMAL(10,2)         NOT NULL
);

a nějakou auditní tabulku, jako je tato:

CREATE TABLE ProductAudit
(
     AuditID      INT                   IDENTITY PRIMARY KEY, 
     ProductID    INT                   NOT NULL
     OldName      NVARCHAR(100)         NULL,
     OldPrice     DECIMAL(10,2)         NULL,
     NewName      NVARCHAR(100)         NULL,
     NewPrice     DECIMAL(10,2)         NULL
);

Poté vytvoříte spouštěč:

CREATE TRIGGER TR_AUDIT
ON Product
FOR INSERT, UPDATE, DELETE
AS
BEGIN
       INSERT INTO ProductAudit (ProductID, OldName, OldPrice, NewName, NewPrice)
       SELECT 
           COALESCE(I.ID, D.ID),
           D.Name,
           D.Price,
           I.Name,
           I.Price
       FROM 
           INSERTED I FULL OUTER JOIN DELETED D ON I.ID = D.ID;
END
GO

Tady to máte.



  1. 5 praktických tipů k databázi pro začátečníky

  2. Jak funguje fulltextové vyhledávání MySQL?

  3. MySql Regex Expression test

  4. SQL nastavuje hodnoty jednoho sloupce rovné hodnotám jiného sloupce ve stejné tabulce