SQL Server DDL триггер не срабатывает - PullRequest
2 голосов
/ 03 апреля 2019

Я пытаюсь создать триггер 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 Ответ

4 голосов
/ 03 апреля 2019

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

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

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...