Wyzwalacze DDL

Tworzenie i optymalizacja triggerów w SQL Server

Florin Angelescu

Instructor

Definicja i właściwości

Wyzwalacze DML

  • zdarzenia powiązane z instrukcjami DML INSERT, UPDATE, DELETE
  • używane z AFTER lub INSTEAD OF
  • dołączane do tabel lub widoków
  • specjalne tabele inserted i deleted

Wyzwalacze DDL

  • zdarzenia powiązane z instrukcjami DDL CREATE, ALTER, DROP
  • tylko z AFTER
  • dołączane do baz danych lub serwerów
  • brak specjalnych tabel
Tworzenie i optymalizacja triggerów w SQL Server

AFTER i FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
Tworzenie i optymalizacja triggerów w SQL Server

AFTER i FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

Tworzenie i optymalizacja triggerów w SQL Server

Wymagania wstępne wyzwalacza DDL

  • Obiekt docelowy (serwer lub baza danych)
  • Opis wyzwalacza
  • Zdarzenia wyzwalające (DDL)
  • Nazwa wyzwalacza
  • DATABASE
  • Tabela dziennika ze zmianami definicji
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
Tworzenie i optymalizacja triggerów w SQL Server

Definicja wyzwalacza DDL

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
Tworzenie i optymalizacja triggerów w SQL Server

Zapobieganie zdarzeniom wyzwalającym w wyzwalaczach DML

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('You are not allowed to remove tables from this database.', 16, 1); ROLLBACK;
Tworzenie i optymalizacja triggerów w SQL Server

Czas na ćwiczenia!

Tworzenie i optymalizacja triggerów w SQL Server

Preparing Video For Download...