Разъясните про создание тригера плз.

GaZone
Дата: 24.02.2010 14:14:52
Синтаксис создания ясен...

SET TERM !! ;
CREATE [NAME] FOR [TABLE]
BEFORE [DELETE | INSERT | UPDATE] AS
BEGIN
  ..................
END !!
SET TERM ; !!

Задача: Создать триггер, на действия DELETE | INSERT | UPDATE, изменяемую|удаляемую|вставляемую строку необходимо записать в другую таблицу.

Сразу возникли пару вопросов.
1. Можно ли создать один триггер на несколько дейстивий?
2. Как узнать с какой именно строкой совершались манипуляции?

Спасибо.
Гавриленко Сергей Алексеевич
Дата: 24.02.2010 14:17:11
Вы форумом не ошиблись? Потому что синтаксис не TSQL.
GaZone
Дата: 24.02.2010 14:22:43
Да, синтаксисом чутка ошибся, но вопрос именно по TSQL для MSSQL2005
Knyazev Alexey
Дата: 24.02.2010 14:24:06
1) Да
2) поясните, про что вы
Knyazev Alexey
Дата: 24.02.2010 14:24:46
Knyazev Alexey
1) Да
2) поясните, про что вы


если прально понял 2ой вопрос, то отслеживайте систмные таблицы INSERTED/DELETED
GaZone
Дата: 24.02.2010 14:28:23
Да вы правы, как раз нашел фак:
[quote автор]Когда триггер срабатывает и начинает выполняться, во время его выполнения существуют две специальные таблицы - INSERTED и DELETED. В них находятся записи, соответсвенно добавляемые или удаляемые. Глобальная переменная @@ROWCOUNT указывает на число записей, учавствующих в операциях с данными. quote]

А что на счет UPDATE? Измененные строки также попадают в INSERTED?
WarAnt
Дата: 24.02.2010 14:36:25
GaZone,

в Inserted новые данные
в deleted соответсвенно старые данные

по первому пункту (for insert, update, delete) и триггер будет срабатывать на всё:)
GaZone
Дата: 24.02.2010 15:03:21
А UPDATE?
Гавриленко Сергей Алексеевич
Дата: 24.02.2010 15:34:11
GaZone
А UPDATE?
Что "update"?
GaZone
Дата: 24.02.2010 23:13:35
Те что изменяются, куда записываются эти строки? тоже в INSERTED?