Триггер DDL SQL Server не запускается

#sql-server

#sql-server

Вопрос:

Я пытаюсь создать триггер DDL в CREATE_TABLE в базе данных tempdb (да, я знаю, что он будет удален при перезапуске сервера) как:

 use tempdb;
go

create trigger tt1
on database
for create_table
as
    begin
    print 'TRIGGER FIRED';
    raiserror('TEST ERROR', 16, 1);
    rollback;
    end
go

use master;
go

create table #ttt (f1 nvarchar(25));
select * from #ttt;
drop table #ttt;
  

…но триггер, похоже, не срабатывает.

Кто-нибудь может объяснить, что мне нужно сделать, чтобы это заработало?

Спасибо.

Ответ №1:

Вы не сможете заставить это работать

Триггеры DDL срабатывают только после выполнения инструкций DDL, которые их запускают. Триггеры DDL нельзя использовать вместо триггеров. Триггеры DDL не запускаются в ответ на события, которые влияют на локальные или глобальные временные таблицы и хранимые процедуры.

Источник

Комментарии:

1. Спасибо! Я видел несколько блогов, показывающих триггеры, которые утверждали, что работают с базой данных tempdb.