Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 нубовопросы по тригерам  [new]
Дядя Петя Вася
Member

Откуда:
Сообщений: 1368
добрый день, однако!
1. тригеров может быть на одну таблицу овердокуя?
2.по записям для вставления курсором пробегаться? (там нужен парсинг json поэтому запросом будет тяжеловато)
7 июл 17, 16:34    [20624055]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4680
Дядя Петя Вася
добрый день, однако!
1. тригеров может быть на одну таблицу овердокуя?
2.по записям для вставления курсором пробегаться? (там нужен парсинг json поэтому запросом будет тяжеловато)



1) https://docs.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server
2)
7 июл 17, 17:12    [20624229]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Дядя Петя Вася
добрый день, однако!
1. тригеров может быть на одну таблицу овердокуя?
2.по записям для вставления курсором пробегаться? (там нужен парсинг json поэтому запросом будет тяжеловато)
1. Много. Причём запускаются в неопределённом порядке.
Всё, что можно сделать - задать триггер, запускаемый первым, и триггер, запускаемый последним.
2. Про вставку в триггере не совсем понятно, обычно вставлять явно надо в триггере INSTEAD OF INSERT.
Вся обработка данных обычно опирается на псевдотаблицы inserted и deleted, определённых внутри триггера.
По ним определяют какие записи затронуты операцией, а также новые и старые значения полей в записях.
Надо учесть, что в этих псевдотаблицах может быть много записей - от 0 до триллионов (шучу).
7 июл 17, 18:14    [20624423]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
Дядя Петя Вася
Member

Откуда:
Сообщений: 1368
вот такая сейчас у меня шняга - среди добавляемой строки есть id на связанную таблицу. Если просто написать запрос
select * from table where id = inserted.id

то выдает строку, а в триггере пустота! Это какие-то особенности или тупо в момент триггера строки действительно нет в базе?
7 июл 17, 18:35    [20624474]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
лолл
Member

Откуда:
Сообщений: 450
iap
Причём запускаются в неопределённом порядке.
Всё, что можно сделать - задать триггер, запускаемый первым, и триггер, запускаемый последним.


Вот всегда мучил вопрос: что за гений это придумал? Неужели его гения не хватило на присвоение триггерам приоритетов запуска?)
10 июл 17, 11:21    [20628416]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
лолл
iap
Причём запускаются в неопределённом порядке.
Всё, что можно сделать - задать триггер, запускаемый первым, и триггер, запускаемый последним.


Вот всегда мучил вопрос: что за гений это придумал? Неужели его гения не хватило на присвоение триггерам приоритетов запуска?)

ну если кто нибудь расскажет сначала зачем нужно больше одного, и если вариант - "простые/короткие" то почему же имееет разница порядок для триггеров на одно и тоже действие одной и той же таблицы?
10 июл 17, 11:27    [20628448]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
лолл
Member

Откуда:
Сообщений: 450
TaPaK,

если есть возможность создавать более одного, то эта возможность должна быть полноценной! в том числе с указанием строгого порядка исполнения
10 июл 17, 11:36    [20628493]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
лолл
TaPaK,

если есть возможность создавать более одного, то эта возможность должна быть полноценной! в том числе с указанием строгого порядка исполнения

зачем
10 июл 17, 11:39    [20628510]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
лолл
Member

Откуда:
Сообщений: 450
TaPaK,

за тем же, зачем и возможность создавать несколько.
10 июл 17, 11:46    [20628549]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
лолл
TaPaK,

за тем же, зачем и возможность создавать несколько.

вам наверное очень трудно жить с 10 пальцами на руках... каждым можно ткнуть в непонятном порядке да ещё и месть столько
10 июл 17, 11:48    [20628562]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
лолл
Member

Откуда:
Сообщений: 450
TaPaK,

судя по опечаткам, у вас пальцев явно меньше, либо не все используете по прямому назначению :)
10 июл 17, 11:49    [20628570]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7658
лолл
TaPaK,

если есть возможность создавать более одного, то эта возможность должна быть полноценной! в том числе с указанием строгого порядка исполнения


Какая разница, в каком порядке выполнять проверки? Надо понимать - для чего нужны триггеры и использовать их по назначению.
10 июл 17, 11:50    [20628582]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Владислав Колосов
лолл
TaPaK,

если есть возможность создавать более одного, то эта возможность должна быть полноценной! в том числе с указанием строгого порядка исполнения


Какая разница, в каком порядке выполнять проверки? Надо понимать - для чего нужны триггеры и использовать их по назначению.

бараны... ворота... вечное изумление
10 июл 17, 11:52    [20628591]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
лолл
Member

Откуда:
Сообщений: 450
Владислав Колосов,

Понимать нужно, это бесспорно. Разница в запуске может иметь чрезвычайное значение :)
10 июл 17, 11:53    [20628592]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
invm
Member

Откуда: Москва
Сообщений: 9273
TaPaK
ну если кто нибудь расскажет сначала зачем нужно больше одного
Ну, например, один с опцией not for replication, а другой - нет.
10 июл 17, 11:58    [20628617]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
invm
TaPaK
ну если кто нибудь расскажет сначала зачем нужно больше одного
Ну, например, один с опцией not for replication, а другой - нет.
ок, порядок то не важен, да и для 2х вполне статический он
10 июл 17, 12:07    [20628664]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
invm
Member

Откуда: Москва
Сообщений: 9273
TaPaK,

Насчет порядка. Иногда триггер, содержащий как проверки бизнес-правил, так и модификации данных, разбивают на два - проверяющий и модифицирующий. В этом случае, проверяющий должен выполняться первым.
10 июл 17, 12:19    [20628731]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
invm,
конечно, для этого и есть установка первого и последнего триггера
10 июл 17, 12:21    [20628742]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
Adx
Guest
invm
TaPaK,

Насчет порядка. Иногда триггер, содержащий как проверки бизнес-правил, так и модификации данных, разбивают на два - проверяющий и модифицирующий. В этом случае, проверяющий должен выполняться первым.


А ведь можно и не разбивать ...
Зачем их разбивать, если они взаимозависимы?
То, что "иногда разбивают" after триггеры, не говорит положительно о том, кто так делает.
10 июл 17, 13:10    [20628965]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
invm
Member

Откуда: Москва
Сообщений: 9273
Adx
Зачем их разбивать, если они взаимозависимы?
20628617
10 июл 17, 13:20    [20629031]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
лолл
Member

Откуда:
Сообщений: 450
Есть разные случаи, когда код неудобно объединять в тело одного триггера по разным причинам - права и контексты, шифрование, триггеры, созданные некими генераторами кода и т.п.
10 июл 17, 13:21    [20629037]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
лолл
Есть разные случаи, когда код неудобно объединять в тело одного триггера по разным причинам - права и контексты, шифрование, триггеры, созданные некими генераторами кода и т.п.
Возможно даже сопровождаться могут разными разработчиками.
Я вот за 20 лет не делал более одного триггера на одно событие...
Не было нужды
10 июл 17, 13:27    [20629086]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Однако, вот тут:

Можно ли в триггере(for U,I,D) определить какое действие над табл. вызвало его?

придумывал даже, как ни странно.
10 июл 17, 13:30    [20629099]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7658
лолл
Есть разные случаи, когда код неудобно объединять в тело одного триггера по разным причинам - права и контексты, шифрование, триггеры, созданные некими генераторами кода и т.п.


Верно, и эти триггеры должны корректно работать независимо от порядка выполнения. Каждый проверяет свою часть.

лолл
Понимать нужно, это бесспорно. Разница в запуске может иметь чрезвычайное значение :)


Значит не понимаете.
10 июл 17, 14:02    [20629307]     Ответить | Цитировать Сообщить модератору
 Re: нубовопросы по тригерам  [new]
Дядя Петя Вася
Member

Откуда:
Сообщений: 1368
а вот если в триггере генеришь экспешн но при этом хочешь в лог записать то как? вроде вот пишу но не пишется, наверно изза эксепшена
10 июл 17, 16:04    [20630047]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить