sql >> Database >  >> RDS >> Sqlserver

Vergelijk verwijderde en ingevoegde tabel in SQL Server 2008

Ik weet niet helemaal zeker wat je doel is, ik denk dat het zoiets zou kunnen zijn. Laten we zeggen dat we een tabel hebben zoals deze:

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

en een controletabel zoals deze:

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
);

Vervolgens maak je een trigger:

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

Daar heb je het.



  1. Geef MySql-verschillende waarden door aan een c#-tekenreeks

  2. Hoe optimaliseer ik de zoekopdrachten van MySQL met constanten?

  3. mysql:haal het aantal records tussen twee datum-tijd

  4. Rails 4-query uniek per enkel attribuut