Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / где можно найти / 10 сообщений из 10, страница 1 из 1
25.04.2001, 02:08
    #32004773
krimy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
Плз подскажите, где можно найти в сети описание принципов работы с триггерами для 6.5,
в частнрсти формирование и работа с inserted, deleted. Или опишите сами.
Заранее спосибо.
...
Рейтинг: 0 / 0
25.04.2001, 09:35
    #32004778
VictorS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
Вопрос, по-моему, слишком общий - можно посоветовать почитать books online -там есть и примеры работы с inserted / deleted.
...
Рейтинг: 0 / 0
25.04.2001, 10:02
    #32004782
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
Если в 2-х словах, то формировать inserted и deleted не надо, они уже есть, когда выполняется триггер. Первая содержит появившиеся записи, вторая - удаленные. А так с этими таблицами можно работать как с обычными. Даже не знаю какие тут могут возникнуть вопросы.
...
Рейтинг: 0 / 0
25.04.2001, 17:16
    #32004811
krimy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
А интересует меня вот какие вопросики:
В этих таблицах записаны строки последнего запроса или транзакции или же всех выполненных при теущем соединении.
Точно не понимаючи как они формируются, смею предположить, что при вставке/изменении и рабочая таблица и inserted должны иметь одинаковые модифицируемые строки. Далее, при удалении, тк триггер выполняется после операции, рабочая таблица не должна уже иметь стертые строки в то время как deleted их содержит. Прошу поправить коли не так.
...
Рейтинг: 0 / 0
25.04.2001, 17:57
    #32004818
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
При Insert в таблицу - в Inserted то, что Insert, в deleted - пусто
При Update - в Inserted то, на что изменили, в deleted - что было
При Delete в Inserted пусто в deleted - что удалили

Inserted и (или) Deleted содержат только те записи, вставка, изменение или удаление которых и вызвала срабатывание триггера. При следуюшей операции все произойдет сначала.

В остальном Вы все правильно понимаете.

Удачи!
...
Рейтинг: 0 / 0
25.04.2001, 19:23
    #32004833
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
Хочу дополнить предыдущий ответ в части транзакций. Не важно, выполняется ли триггер внутри другой транзакции, или в пределах неявной транзакции, которая возникает при любых операция вставки/удаления/модификации. Inserted содержит записи, добавленные в таблицу с момента запуска триггера (а не с момента запуска транзакции). С Deleted - аналогично.
...
Рейтинг: 0 / 0
25.04.2001, 22:36
    #32004850
Fompro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
Маленькое дополнение:
При "входе" в триггер @@TRANCOUNT++
...
Рейтинг: 0 / 0
25.04.2001, 23:32
    #32004853
krimy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
Огромное спасибище всем откликнувшимся на просьбу.
Если действительно при удалении строки ее уже нет в рабочей таблице, но она присутствует в deleted, объясните местечко в "ихнем" триггере из онлайновской помощи.

Create Trigger Tri_Del_Stores
On STORES
For DELETE
As /* First check the number of rows modified and disallow
anybody from deleting more than one store at a time */
If @@RowCount > 1
Begin
ROLLBACK TRAN
RAISERROR ( `You can delete only one store at a time.', 16, 10 )
End
/* declare a temp var to store the store that is being deleted */
Declare @sStorID char(4)
/* now get the value of the store being nuked */

???????????

Select @sStorID = D.STOR_ID
From STORES S, DELETED D
Where S.STOR_ID = D.STOR_ID

????????????


If exists (Select *
From SALES
Where STOR_ID = @sStorID )
Begin
ROLLBACK TRAN
RAISERROR ( `This store cannot be deleted because there are
still sales valid in the SALES table.', 16, 10 )
End
Go
...
Рейтинг: 0 / 0
26.04.2001, 09:43
    #32004861
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
И где ж это написано?
Вообще-то фигня конечно.
...
Рейтинг: 0 / 0
26.04.2001, 14:19
    #32004884
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где можно найти
В "ихнем" - это в чьем? Конечно же, за хвост, да об стену того, кто пишет такие триггеры. Вообще, написание триггеров, оперирующих только с одной строкой говорит о не достаточном профессионализме такого писаки. Не говоря уже о том, что написан он с ошибками.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / где можно найти / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]