Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 trigger instead of delete  [new]
Tester666
Member

Откуда:
Сообщений: 179
Добрый день!
Вопрос такой - оптимально ли использовать временные таблицы или табличные переменные в триггерах. В моем случае это instead of delete. Или лучше этот код в процедуру добавлять. НО! процедур много..поэтому заюзать хочется все-таки триггер.
25 окт 13, 12:51    [15031214]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Какой код, что он должен делать, какие процедуры?! Соберитесь с мыслями и изложите задачу, а не придуманный Вами способ ее решения.
25 окт 13, 13:07    [15031360]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
Tester666
Member

Откуда:
Сообщений: 179
Есть мнение, что при использовании временной таблицы в триггере он блокирует базу tempDB, что не есть хорошо.
Хотелось бы почитать материал по этой теме. Ну и понять будет та же проблема в табличной переменной.
Не хотелось бы получить набор блокировок.
25 окт 13, 14:11    [15031917]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Tester666
Есть мнение

Чьё мнение?
25 окт 13, 14:15    [15031959]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
Glory
Member

Откуда:
Сообщений: 104760
Tester666
Есть мнение, что при использовании временной таблицы в триггере он блокирует базу tempDB

Я вам открою секрет. Использование любого объекта в MSSQL что-то да блокирует.
Просто различают совметимые блокировки и несовместимые
25 окт 13, 14:21    [15032032]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
Tester666
Добрый день!
Вопрос такой - оптимально ли использовать временные таблицы или табличные переменные в триггерах. В моем случае это instead of delete. Или лучше этот код в процедуру добавлять. НО! процедур много..поэтому заюзать хочется все-таки триггер.
Разницы нет, потому что триггер - это и есть хранимая процедура.

Tester666
Есть мнение, что при использовании временной таблицы в триггере он блокирует базу tempDB, что не есть хорошо.
Наверное, это мнение очень опытных разрабротчиков :-)

Такое было до версии 6.5 включительно, с версии 7 и старше никакой блокировки нет.
25 окт 13, 16:25    [15033157]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Tester666
Добрый день!
Вопрос такой - оптимально ли использовать временные таблицы или табличные переменные в триггерах. В моем случае это instead of delete. Или лучше этот код в процедуру добавлять. НО! процедур много..поэтому заюзать хочется все-таки триггер.
Если вам не нравятся триггеры, то создайте процедуру которая делает что вам надо, а уже её вызывайте из всех остальных.
25 окт 13, 21:22    [15034465]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
alexeyvg
Такое было до версии 6.5 включительно, с версии 7 и старше никакой блокировки нет.


Не будем лукавить. Проблемы с PFS есть в tempdb. Но это проявляется при нескольких сотнях одновременных сессий, создающих временные объекты. Лечится увеличением количества файлов данных tempdb.

Сообщение было отредактировано: 25 окт 13, 21:41
25 окт 13, 21:40    [15034540]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
pkarklin
Но это проявляется при нескольких сотнях одновременных сессий
И у ТС именно такой случай, ага.
Набежали гуру и пальцы киданули. :)
26 окт 13, 00:20    [15035226]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
pkarklin
alexeyvg
Такое было до версии 6.5 включительно, с версии 7 и старше никакой блокировки нет.


Не будем лукавить. Проблемы с PFS есть в tempdb. Но это проявляется при нескольких сотнях одновременных сессий, создающих временные объекты. Лечится увеличением количества файлов данных tempdb.
Ну какой ещё PFS :-)

Я говорю про тривиальную блокировку системных таблиц в tempdb.

Создаёте временную таблицу в транзакции - делается запись в sysobjects - больше никто создать таблицу не может, пока вы не закроете транзакцию. Было нечто в этом роде (точно не скажу, при каких условиях).
26 окт 13, 01:18    [15035476]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
alexeyvg
pkarklin
пропущено...


Не будем лукавить. Проблемы с PFS есть в tempdb. Но это проявляется при нескольких сотнях одновременных сессий, создающих временные объекты. Лечится увеличением количества файлов данных tempdb.
Ну какой ещё PFS :-)

Я говорю про тривиальную блокировку системных таблиц в tempdb.

Создаёте временную таблицу в транзакции - делается запись в sysobjects - больше никто создать таблицу не может, пока вы не закроете транзакцию. Было нечто в этом роде (точно не скажу, при каких условиях).


Как я понимаю табличные переменные решают проблему. Так?
26 окт 13, 02:10    [15035550]     Ответить | Цитировать Сообщить модератору
 Re: trigger instead of delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
SandalTree
Я говорю про тривиальную блокировку системных таблиц в tempdb.

Создаёте временную таблицу в транзакции - делается запись в sysobjects - больше никто создать таблицу не может, пока вы не закроете транзакцию. Было нечто в этом роде (точно не скажу, при каких условиях).


Как я понимаю табличные переменные решают проблему. Так?[/quote]В те времена не было табличных переменных.

А сейчас это неважно, после 7 версии ничего не блокируется (за исключением случая, упомянутого pkarklin), так что можно смело использовать временные таблицы в транзакциях, триггерах и где угодно.
26 окт 13, 20:11    [15036458]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить