Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Триггеры в SQL Server  [new]
novi4ok78
Guest
Добрый день!
Могли бы подсказать, как работают триггеры в SQL Server, а именно, вызывается ли триггер каждый раз, после события на которое он настроен, или вызывает всего один раз, после завершения всех изменений.
И есть ли отличия в работе "Instead of" триггера и обычного, в области вызова?
12 мар 14, 16:39    [15711836]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
novi4ok78,

Ну да, мс всегда не дукоментировала свои продукты, однако кулхацкеры выкрали и выложили в интернет секретную документацию.
Вот она
12 мар 14, 17:06    [15712035]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
novi4ok78
Guest
Ken@t, ценю вашу иронию, но я читал эти статьи и не увидел там ответа на мой вопрос.
12 мар 14, 17:11    [15712085]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
novi4ok78,

А это что ?
12 мар 14, 17:18    [15712135]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
novi4ok78,

Всё там же
12 мар 14, 17:19    [15712152]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
novi4ok78
Guest
Ken@t, спасибо за ответы.
С обычными триггерами все понятно, они будут вызываться один раз, после завершения всех инструкции.
А вот тригеры Instead Of также будут работать? Я просто опять не увидел этой инфы в статьях.
12 мар 14, 18:03    [15712489]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
novi4ok78,

78 - айкью или возраст ?

Таблицы inserted и deleted в триггерах INSTEAD OF подчиняются тем же правилам, что и таблицы inserted и deleted в триггерах AFTER. Формат таблиц inserted и deleted совпадает с форматом таблицы, для которой задан триггер INSTEAD OF. Каждый столбец таблиц inserted и deleted прямо сопоставляется с определенным столбцом базовой таблицы.
12 мар 14, 18:09    [15712531]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
novi4ok78
Могли бы подсказать, как работают триггеры в SQL Server, а именно, вызывается ли триггер каждый раз, после события на которое он настроен, или вызывает всего один раз, после завершения всех изменений.
И есть ли отличия в работе "Instead of" триггера и обычного, в области вызова?
Триггер - это обычная хранимая процедура, которая вызывается после (AFTER) или вместо (INTEAD OF) выполнения стейстмента INSERT/UPDATE/DELETE, в той же транзакции. Только в нём ещё присутствуют таблицы inseerted и deleted
12 мар 14, 19:24    [15712916]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ken@t
novi4ok78,

78 - айкью или возраст ?

Таблицы inserted и deleted в триггерах INSTEAD OF подчиняются тем же правилам, что и таблицы inserted и deleted в триггерах AFTER. Формат таблиц inserted и deleted совпадает с форматом таблицы, для которой задан триггер INSTEAD OF. Каждый столбец таблиц inserted и deleted прямо сопоставляется с определенным столбцом базовой таблицы.
Не совсем так.
В триггерах AFTER inserted и deleted не содержат полей TEXT, IMAGE.
А в триггерах INSTEAD OF они есть.
Кроме того, поле IDENTITY заполнено в триггерах AFTER INSERT и равно NULL в триггере INSTEAD OF INSERT.
12 мар 14, 21:10    [15713500]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
iap
Ken@t
novi4ok78,

78 - айкью или возраст ?

Таблицы inserted и deleted в триггерах INSTEAD OF подчиняются тем же правилам, что и таблицы inserted и deleted в триггерах AFTER. Формат таблиц inserted и deleted совпадает с форматом таблицы, для которой задан триггер INSTEAD OF. Каждый столбец таблиц inserted и deleted прямо сопоставляется с определенным столбцом базовой таблицы.
Не совсем так.
В триггерах AFTER inserted и deleted не содержат полей TEXT, IMAGE.
А в триггерах INSTEAD OF они есть.
Кроме того, поле IDENTITY заполнено в триггерах AFTER INSERT и равно NULL в триггере INSTEAD OF INSERT.


Это выдержка из BOL, безжалостно выдранная из документации, выше и ниже детальное описание триггеров, как-то так.
13 мар 14, 09:38    [15715063]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
UInt64
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 26
novi4ok78,
Забудьте !
Забудьте про триггеры, как про страшный сон и никогда, слышите, никогда их не используйте !
Вы еще вспомните мой совет.
13 мар 14, 09:55    [15715145]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
invm
Member

Откуда: Москва
Сообщений: 9826
UInt64
Забудьте !
Забудьте про триггеры, как про страшный сон и никогда, слышите, никогда их не используйте !
Вы просто не умеете их готовить.
13 мар 14, 10:00    [15715169]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
AZv
Member

Откуда:
Сообщений: 69
UInt64
Забудьте про триггеры, как про страшный сон и никогда, слышите, никогда их не используйте !

Скоро будет 20 лет, как использую триггеры. "Страшного сна" не наблюдаю.
Что я не так делаю?
13 мар 14, 10:03    [15715191]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
AZv
Что я не так делаю?
Не слушаетесь UInt64!
13 мар 14, 10:05    [15715200]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
AZv
Member

Откуда:
Сообщений: 69
iap
Не слушаетесь

А должен?
13 мар 14, 10:10    [15715228]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
UInt64
Member [скрыт] [заблокирован]

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

Уважаемый сэр !
Совет был дан не вам, а вполне определенному лицу (со вполне определенной квалификацией).
13 мар 14, 10:16    [15715261]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
AZv
Member

Откуда:
Сообщений: 69
UInt64
AZv,

Уважаемый сэр !
Совет был дан не вам, а вполне определенному лицу (со вполне определенной квалификацией).

Но видите ли в чем дело, сэр: если определенное лицо последует Вашему совету - оно так и не научится безопасно использовать триггеры и, соотвественно, не повысит свою ("определенную") квалификацию...
Вы согласны, сэр?
13 мар 14, 10:21    [15715293]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
iap
Member

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

Уважаемый сэр !
Совет был дан не вам, а вполне определенному лицу (со вполне определенной квалификацией).
Совет в виде приказа?
С "вполне определенной квалификацией" мы рождаемся, и с ней же помираем, да?
13 мар 14, 10:21    [15715297]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а уж с блокировками как интересно в инстедных триггерах бывает-то :)
13 мар 14, 12:46    [15716600]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
а уж как весело с output , identity )))
13 мар 14, 12:56    [15716700]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Да всё нормально, не сгущайте!
13 мар 14, 12:56    [15716706]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
invm
Member

Откуда: Москва
Сообщений: 9826
Crimean
а уж с блокировками как интересно в инстедных триггерах бывает-то :)
Ну об этом нужно просто знать и по необходимости хинтовать представление в запросе.
13 мар 14, 13:07    [15716818]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Ken@t
а уж как весело с output , identity )))


с output - да, к сожалению. а вот с identity - с отказом от новомодного scope никаких проблем больше не вижу. но, конечно, в целом - странновато.. почему в триггерах нет штатных возможностей влиять на output, identity, error и т.д., то есть на то, что триггер явно "портит".. как по мне - дали бы средства, чтобы остальной код не надо было править с навешиванием триггеров.. но - мечты-мечты..
13 мар 14, 14:32    [15717756]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
Возможно, что дело связано с фиксацией транзакции.
13 мар 14, 18:14    [15719723]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры в SQL Server  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Crimean
Ken@t
а уж как весело с output , identity )))
с output - да, к сожалению. а вот с identity - с отказом от новомодного scope никаких проблем больше не вижу. но, конечно, в целом - странновато.. почему в триггерах нет штатных возможностей влиять на output, identity, error и т.д., то есть на то, что триггер явно "портит".. как по мне - дали бы средства, чтобы остальной код не надо было править с навешиванием триггеров.. но - мечты-мечты..
Даёшь декларативные триггера!!! Т.е. это не процедура (месиво TSQL), а выражение.
Что-то типа как Rules в PostgreSQL.
14 мар 14, 01:01    [15721159]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить