![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Подскажите (если можно на примере), использование таблицы "Inserted"
СУБД MS SQL 2000 |
|
#2
|
|||
|
|||
|
На конкретном примере не могу, к сожалению (по причине того, что сам вот только решил пощупать MS SQL).
Но здесь : http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=625 вроде бы доходчиво (при сравнении с IB) ... |
|
#3
|
|||
|
|||
|
Могу привести более подробное описание:
http://msdn.microsoft.com/ru-ru/library/ms191300.aspx, но принцип работы inserted все равно не очень понятен. |
|
#5
|
||||
|
||||
|
А что конкретно не понятно-то?
|
|
#6
|
|||
|
|||
|
Не понятно как реализовать работу с этой таблицей. Хотелось бы увидеть пример, как это сделать. Я понимаю так: создается переменная, задаем ей выборку из inserted, а дальше используем переменную в логическом(их) конструкциях. Так? Если так, то каким образом данные попадают в inserted - как сделать, чтобы туда попали нужные данные?
|
|
#7
|
||||
|
||||
|
Где ты хочешь использовать эти таблицы?
|
|
#8
|
||||
|
||||
|
Насколько я в курсе таблицы Inserted и Deleted это временные таблицы которые доступны только из тригеров и пользоваться ими в обычной хранимке нельзя. Например если у вас есть SQL-запрос на обновление вида:
Код:
update MyTable set MyField=MyValue where MyID=MyValue то будет вызван соответствующий тип тригера в области видимости которого будут доступны эти таблицы 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 |
|
#9
|
|||
|
|||
|
Тогда, просветите и меня за компанию, pls.
1. Триггер этот (по событию) "after" или "before" ? 2. Каким образом, все-таки, можно использовать Inserted в контексте триггера для анализа данных ("новых" и "старых") ? |
|
#10
|
|||
|
|||
|
Вот еще ссылка, где есть инфа по этим вопросам :
http://www.intuit.ru/department/database/sql/14/2.html Нда. Насколько все просто, гибко, прозрачно и четко регламентированно все это реализовано в Interbase (Borland). И насколько туманно - в MS SQL (Microsoft) ... |