Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Базы данных: SQL > DDL trigger MS SQL для временных таблиц


Автор: SPrograMMer 22.09.21, 12:06
Я знаю, что можно сотворить DDL триггер, например, на создание/обновление структуры/удаления/переименования/etc таблицы в MS SQL Server.
Это будет тригер уровня БД (on database). Здесь все хорошо, пока таблицы настоящие (существующие в БД).
Но вот если создаем временную (локальную - с одной решеточкой #, или глобальную - с двумя решеточками ##) таблицу триггер не срабатывает.
Я не глупый (вроде), я знаю, что такие временные таблицы живут в БД tempdb.
Вешаем триггер на tempdb:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    use tempdb;
    go
    create trriger create_tab_trg on database
    for create_table
    as begin
      select eventdata();
    end;
    go

но триггер продолжает реагировать только на создание настоящий таблиц в tempdb, но никак не временных.
в связи с чем вопрос - нельзя ли факт создания(или еще какого ddl действия) временной таблицы отловить?
Может какой другой тип триггера надо применить - их в ms sql тьма тьмущая, и со всеми еще не пришлось сталкиваться.

Автор: SPrograMMer 22.09.21, 13:11
кажется я сам нашел ответ на свой вопрос:
Цитата
DDL triggers don't fire in response to events that affect local or global temporary tables and stored procedures.

Эххх... :whistle: а так хотелось :yes-sad:

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)