Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Porównaj usuniętą i wstawioną tabelę w SQL Server 2008

Nie jestem do końca pewien, jaki jest twój cel, myślę, że może to być coś takiego. Załóżmy, że mamy taką tabelę:

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

i jakąś tabelę audytu, taką jak ta:

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

Następnie tworzysz wyzwalacz:

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

Masz to.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak za pomocą SSDT rozwiązać błędy SQL71561 w widoku, który odwołuje się do obiektów w innej bazie danych?

  2. Wyszukiwanie CHARINDEX vs LIKE zapewnia zupełnie inną wydajność, dlaczego?

  3. Instrukcja Delete w SQL jest bardzo powolna

  4. SQL Server:Dołącz niepoprawną wersję 661

  5. SQL Server, wprowadzający w błąd XLOCK i optymalizacje