Показать сообщение отдельно
  #8  
Старый 30.06.2009, 14:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Насколько я в курсе таблицы Inserted и Deleted это временные таблицы которые доступны только из тригеров и пользоваться ими в обычной хранимке нельзя. Например если у вас есть SQL-запрос на обновление вида:
Код:
update MyTable set MyField=MyValue where MyID=MyValue
и у вас есть тригер для таблицы MyTable
то будет вызван соответствующий тип тригера в области видимости которого будут доступны эти таблицы Inserted и Deleted.
Структура этих таблиц в точности повторяет таблицу вызвавшую тригер и содержит набор отобранных данных.
Вот пример из живой БД работы с таблицей Inserted:
Код:
CREATE TRIGGER [AddPhone] ON [dbo].[ObjPhone]
INSTEAD OF INSERT
AS
	Declare @ObjectTypeID Int
	Declare @NodeID Int
	Declare @ObjectID Int
	-- Определяем тип добавляемого объекта и узел на котором происходит добавление
	Exec GetDicIndex 'DicObjectType', 'Телефон', @ObjectTypeID OUT
	Exec GetDicIndex 'DicNode', @@servername, @NodeID OUT
	-- Регистрируем объект и получаем его идентификатор
	Insert dbo.Object (NodeID, ObjectTypeID) Values (@NodeID, @ObjectTypeID)
	Set @ObjectID = Ident_Current('Object')
	-- Вставляем новую запись
	Insert ObjPhone (CountryID, CityID, Number, Extension, PhoneTypeID, ProviderID, ObjectID)
		Select CountryID, CityID, Number, Extension, PhoneTypeID, ProviderID, @ObjectID
		From Inserted
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием