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

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

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

Удачи!
...
Рейтинг: 0 / 0
где можно найти
    #32004833
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу дополнить предыдущий ответ в части транзакций. Не важно, выполняется ли триггер внутри другой транзакции, или в пределах неявной транзакции, которая возникает при любых операция вставки/удаления/модификации. Inserted содержит записи, добавленные в таблицу с момента запуска триггера (а не с момента запуска транзакции). С Deleted - аналогично.
...
Рейтинг: 0 / 0
где можно найти
    #32004850
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маленькое дополнение:
При "входе" в триггер @@TRANCOUNT++
...
Рейтинг: 0 / 0
где можно найти
    #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
где можно найти
    #32004861
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И где ж это написано?
Вообще-то фигня конечно.
...
Рейтинг: 0 / 0
где можно найти
    #32004884
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В "ихнем" - это в чьем? Конечно же, за хвост, да об стену того, кто пишет такие триггеры. Вообще, написание триггеров, оперирующих только с одной строкой говорит о не достаточном профессионализме такого писаки. Не говоря уже о том, что написан он с ошибками.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / где можно найти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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