|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Использование Inserted
Подскажите (если можно на примере), использование таблицы "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) ... |