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

Utwórz wyzwalacz, który wstawia wartości do nowej tabeli po zaktualizowaniu kolumny

Coś takiego powinno zrobić to, czego potrzebujesz. Będziesz mieć INSERT poniższe instrukcje wstawiają wartości wskazujące na operację wykonaną w MyLogTable .

CREATE TRIGGER [dbo].[TRIG_MyTable]
ON [dbo].[MyTable]
AFTER INSERT, UPDATE

AS 

DECLARE @INS int, @DEL int

SELECT @INS = COUNT(*) FROM INSERTED
SELECT @DEL = COUNT(*) FROM DELETED

IF @INS > 0 AND @DEL > 0 
BEGIN

    -- a record got updated, so log accordingly.

    INSERT INTO MyLogTable
    SELECT 'New Values', getdate() FROM INSERTED

    INSERT INTO MyLogTable
    SELECT 'Old Values', getdate() FROM DELETED

END

ELSE 
BEGIN

    -- a new record was inserted.

    INSERT INTO MyLogTable
    SELECT 'Insert', getdate() FROM INSERTED

END

Jeśli chcesz, możesz również dodać kolumny z INSERTED i DELETED do tabeli dziennika, jeśli chcesz przechwycić rzeczywiste wartości kolumn, które zostały wstawione lub zaktualizowane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Stronicowanie oparte na przesunięciu/pobieraniu (implementacja) w EntityFramework (przy użyciu LINQ) dla programu SQL Server 2008

  2. Jakie kolumny generalnie tworzą dobre indeksy?

  3. Obsługa nieistniejących wartości w wyrażeniu zapytania sql dla wykresu ssrs

  4. SQL Jak ustalić, czy data miesiąc data zawiera 29,30 lub 31

  5. Jak wykonać zapytanie o wartości i atrybuty XML z tabeli w SQL Server?