Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.06.2009, 14:07
SAWaGE SAWaGE вне форума
Прохожий
 
Регистрация: 09.09.2008
Сообщения: 34
Репутация: 10
По умолчанию Использование Inserted

Подскажите (если можно на примере), использование таблицы "Inserted"
СУБД MS SQL 2000
Ответить с цитированием
  #2  
Старый 29.06.2009, 19:00
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

На конкретном примере не могу, к сожалению (по причине того, что сам вот только решил пощупать MS SQL).
Но здесь :

http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=625

вроде бы доходчиво (при сравнении с IB) ...
Ответить с цитированием
  #3  
Старый 30.06.2009, 12:26
SAWaGE SAWaGE вне форума
Прохожий
 
Регистрация: 09.09.2008
Сообщения: 34
Репутация: 10
По умолчанию

Могу привести более подробное описание:
http://msdn.microsoft.com/ru-ru/library/ms191300.aspx,
но принцип работы inserted все равно не очень понятен.
Ответить с цитированием
  #4  
Старый 30.06.2009, 13:01
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

могу только ссылок подкинуть вот и вот
Ответить с цитированием
  #5  
Старый 30.06.2009, 13:11
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

А что конкретно не понятно-то?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #6  
Старый 30.06.2009, 13:26
SAWaGE SAWaGE вне форума
Прохожий
 
Регистрация: 09.09.2008
Сообщения: 34
Репутация: 10
По умолчанию

Не понятно как реализовать работу с этой таблицей. Хотелось бы увидеть пример, как это сделать. Я понимаю так: создается переменная, задаем ей выборку из inserted, а дальше используем переменную в логическом(их) конструкциях. Так? Если так, то каким образом данные попадают в inserted - как сделать, чтобы туда попали нужные данные?
Ответить с цитированием
  #7  
Старый 30.06.2009, 13:49
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Где ты хочешь использовать эти таблицы?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #8  
Старый 30.06.2009, 14:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 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
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 01.07.2009, 17:52
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Тогда, просветите и меня за компанию, pls.

1. Триггер этот (по событию) "after" или "before" ?

2. Каким образом, все-таки, можно использовать Inserted в контексте триггера для анализа данных ("новых" и "старых") ?
Ответить с цитированием
  #10  
Старый 02.07.2009, 12:02
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Вот еще ссылка, где есть инфа по этим вопросам :

http://www.intuit.ru/department/database/sql/14/2.html

Нда.
Насколько все просто, гибко, прозрачно и четко регламентированно все это реализовано в Interbase (Borland).
И насколько туманно - в MS SQL (Microsoft) ...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter