#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.