Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Дядя Петя Вася Member Откуда: Сообщений: 1368 |
добрый день, однако! 1. тригеров может быть на одну таблицу овердокуя? 2.по записям для вставления курсором пробегаться? (там нужен парсинг json поэтому запросом будет тяжеловато) |
7 июл 17, 16:34 [20624055] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4807 |
1) https://docs.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server 2) |
||
7 июл 17, 17:12 [20624229] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Всё, что можно сделать - задать триггер, запускаемый первым, и триггер, запускаемый последним. 2. Про вставку в триггере не совсем понятно, обычно вставлять явно надо в триггере INSTEAD OF INSERT. Вся обработка данных обычно опирается на псевдотаблицы inserted и deleted, определённых внутри триггера. По ним определяют какие записи затронуты операцией, а также новые и старые значения полей в записях. Надо учесть, что в этих псевдотаблицах может быть много записей - от 0 до триллионов (шучу). |
||
7 июл 17, 18:14 [20624423] Ответить | Цитировать Сообщить модератору |
Дядя Петя Вася Member Откуда: Сообщений: 1368 |
вот такая сейчас у меня шняга - среди добавляемой строки есть id на связанную таблицу. Если просто написать запросselect * from table where id = inserted.id то выдает строку, а в триггере пустота! Это какие-то особенности или тупо в момент триггера строки действительно нет в базе? |
7 июл 17, 18:35 [20624474] Ответить | Цитировать Сообщить модератору |
лолл Member Откуда: Сообщений: 450 |
Вот всегда мучил вопрос: что за гений это придумал? Неужели его гения не хватило на присвоение триггерам приоритетов запуска?) |
||
10 июл 17, 11:21 [20628416] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
ну если кто нибудь расскажет сначала зачем нужно больше одного, и если вариант - "простые/короткие" то почему же имееет разница порядок для триггеров на одно и тоже действие одной и той же таблицы? |
||||
10 июл 17, 11:27 [20628448] Ответить | Цитировать Сообщить модератору |
лолл Member Откуда: Сообщений: 450 |
TaPaK, если есть возможность создавать более одного, то эта возможность должна быть полноценной! в том числе с указанием строгого порядка исполнения |
10 июл 17, 11:36 [20628493] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
зачем |
||
10 июл 17, 11:39 [20628510] Ответить | Цитировать Сообщить модератору |
лолл Member Откуда: Сообщений: 450 |
TaPaK, за тем же, зачем и возможность создавать несколько. |
10 июл 17, 11:46 [20628549] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
вам наверное очень трудно жить с 10 пальцами на руках... каждым можно ткнуть в непонятном порядке да ещё и месть столько |
||
10 июл 17, 11:48 [20628562] Ответить | Цитировать Сообщить модератору |
лолл Member Откуда: Сообщений: 450 |
TaPaK, судя по опечаткам, у вас пальцев явно меньше, либо не все используете по прямому назначению :) |
10 июл 17, 11:49 [20628570] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
Какая разница, в каком порядке выполнять проверки? Надо понимать - для чего нужны триггеры и использовать их по назначению. |
||
10 июл 17, 11:50 [20628582] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
бараны... ворота... вечное изумление |
||||
10 июл 17, 11:52 [20628591] Ответить | Цитировать Сообщить модератору |
лолл Member Откуда: Сообщений: 450 |
Владислав Колосов, Понимать нужно, это бесспорно. Разница в запуске может иметь чрезвычайное значение :) |
10 июл 17, 11:53 [20628592] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
|
||
10 июл 17, 11:58 [20628617] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
|
||||
10 июл 17, 12:07 [20628664] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
TaPaK, Насчет порядка. Иногда триггер, содержащий как проверки бизнес-правил, так и модификации данных, разбивают на два - проверяющий и модифицирующий. В этом случае, проверяющий должен выполняться первым. |
10 июл 17, 12:19 [20628731] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
invm, конечно, для этого и есть установка первого и последнего триггера |
10 июл 17, 12:21 [20628742] Ответить | Цитировать Сообщить модератору |
Adx
Guest |
А ведь можно и не разбивать ... Зачем их разбивать, если они взаимозависимы? То, что "иногда разбивают" after триггеры, не говорит положительно о том, кто так делает. |
||
10 июл 17, 13:10 [20628965] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
|
||
10 июл 17, 13:20 [20629031] Ответить | Цитировать Сообщить модератору |
лолл Member Откуда: Сообщений: 450 |
Есть разные случаи, когда код неудобно объединять в тело одного триггера по разным причинам - права и контексты, шифрование, триггеры, созданные некими генераторами кода и т.п. |
10 июл 17, 13:21 [20629037] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Я вот за 20 лет не делал более одного триггера на одно событие... ![]() Не было нужды |
||
10 июл 17, 13:27 [20629086] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Однако, вот тут: Можно ли в триггере(for U,I,D) определить какое действие над табл. вызвало его? придумывал даже, как ни странно. |
10 июл 17, 13:30 [20629099] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
Верно, и эти триггеры должны корректно работать независимо от порядка выполнения. Каждый проверяет свою часть.
Значит не понимаете. |
||||
10 июл 17, 14:02 [20629307] Ответить | Цитировать Сообщить модератору |
Дядя Петя Вася Member Откуда: Сообщений: 1368 |
а вот если в триггере генеришь экспешн но при этом хочешь в лог записать то как? вроде вот пишу но не пишется, наверно изза эксепшена |
10 июл 17, 16:04 [20630047] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |