T-SQL, klauzula OUTPUT

OUTPUT pozwala na zwrócenie wierszy d0danych, zaktualizowanych lub usuniętych za pomocą komend INSERT, UPDATE  i DELETE. Zwrócony wynik możemy wyświetlić po prostu na ekranie lub wstawić do innej tabeli.  Wyobraźmy sobie, że mamy tabele Employee oraz EmployeeLog zawierającą logi. W celu wykonania loga możemy:

INSERT INTO Employee (ID_EMPLOYEE,FirstName,LastName)
OUTPUT getdate(),'wstawiono wiersz',inserted.ID_EMPLOYEE INTO EmployeeLog
values(1,'Jakies imie,','Jakies nazwisko');

Równoważny efekt można osiągnąć wykorzystując wyzwalacz. Nawet podobnie do dyspozycji mamy tabele inserted oraz deleted.

W sposób analogiczny realizujemy logi dla polecenia UPDATE:

UPDATE Employee SET FirstName='nowe imie'
OUTPUT getdate(),'aktualizacja wiersza',inserted.ID_EMPLOYEE,inserted.FirstName,deleted.FirstName INTO EmployeeLog
WHERE ID_EMPLOYEE=1

W powyższym przykładzie inserted.FirstName zawiera imię po aktualizacji a deleted.LastName przechowuje starą wartość (przed aktualizacją). Ostatni przypadek to polecenie DELETE:

DELETE FROM Employee (ID_EMPLOYEE,FirstName,LastName)
OUTPUT getdate(),'usunieto wiersz',inserted.ID_EMPLOYEE INTO EmployeeLog
where ID_EMPLOYEE=1

Leave a Reply

Your email address will not be published.