Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Транзакции в триггере


Страницы:   1 2 3 4 5

sql ©   (2008-08-29 11:40:00) 

ALTER TRIGGER [trgSettings] ON [dbo].[tSettings]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
BEGIN TRANSACTION
 DECLARE
   @IdSetting int,
   @Section nvarchar(32),
   @Ident nvarchar(32),
   @Value nvarchar(32),
   @iDate datetime,
   @iUser int,
   @uDate datetime,
   @uUser int,
   @Note nvarchar(255),
   @Now datetime,
   @i int;

 SET @Now = GETDATE();

 SET NOCOUNT ON;

 IF EXISTS(SELECT * FROM Inserted)
   BEGIN
     IF NOT EXISTS(SELECT * FROM Deleted)
       BEGIN
         ROLLBACK TRANSACTION
       END
     ELSE
       BEGIN
         COMMIT TRANSACTION
       END;
   END
 ELSE
   BEGIN
     COMMIT TRANSACTION
   END;
END


В какой части текста триггера лучше всего открывать глобальную, по отношению к триггеру, транзакцию ?


Игорь Шевченко   (2008-08-29 15:36:00) [41]

MsGuns ©   (29.08.08 15:22) [43]

Не надо садиться в лужу лишний раз


Курдль   (2008-08-29 15:27:00) [42]


> В какой части текста триггера лучше всего открывать глобальную,
>  по отношению к триггеру, транзакцию ?

А я вот не поленился почитать Ваш код и ужаснулся - это я так отстал от жизни, или триггер ... BEFORE INSERT... существует только в оракле?


MsGuns   (2008-08-29 15:22:00) [43]

>DiamondShark ©   (29.08.08 13:28) [22]
>Нет такой "концепции".

Есть только одна "концепция" - твоя. Остальное - бред сивой кобылы ;)


sql   (2008-08-29 15:21:00) [44]


> DiamondShark ©   (29.08.08 15:11) [41]

Хорошо, если я делаю пакетную вставку, тогда как мне отобразить записи в логе которые я вставил, т.е. лог не обычный клон той таблици в которой триггер, а в общей таблице для логирования событий, думаю примерно понятно о чем речь... Тогда прейдется в триггере делать cursor, чтоб он перелил каждую запись, или нет ?


DiamondShark   (2008-08-29 15:11:00) [45]


> sql   (29.08.08 14:57) [38]
>
>
> > он о пакетной вставке говорит :-D
>
> Нет, это ты о покетной вставке говоришь. Я о ней просто
> спросил: "Что это ?". Потому что сразу не понял....


А в русском написании это неоднозначный термин.
Его можно понять и как bulk insert, и как insert ... select, и ещё хз как.
Поэтому и спросили, что ты под этим понимаешь. А ты -- хз.


> Ну поидеи Inserted, ...., ....d, по одной записи содержат.
> .., или все же если пакетная вставка, ..., ..., весь пакет
> записей и держат... ?

Все записи, которые затрагивает выполняющийся оператор.


stas   (2008-08-29 15:01:00) [46]

sql   (29.08.08 14:57) [38]
Весь, для этого  и таблица, а не переменные в самом триггере.
Триггер выполнится столько раз сколько выполнишь запрос независимо сколько обновилось записей.


sql   (2008-08-29 14:58:00) [47]


> Вот, а если пройдет одновременная вставка или апдейт 10
> записей, Inserted будет содержать 10 записей, как ты их
> сохранишь в переменные?


получил ответ на вопрос.

Ну поидеи Inserted, ...., ....d, по одной записи содержат..., или все же если пакетная вставка, ..., ..., весь пакет записей и держат... ?

...


sql   (2008-08-29 14:57:00) [48]


> он о пакетной вставке говорит :-D

Нет, это ты о покетной вставке говоришь. Я о ней просто спросил: "Что это ?". Потому что сразу не понял....

ЗЫ:


> stas ©   (29.08.08 12:30) [18]
> Вверху общие.
>
> Я сразу скажу этот лог (как в примере) работать будет некорректно
> при пакетной вставке, удалении обновлении.


Ну поидеи Inserted, ...., ....d, по одной записи содержат..., или все же если пакетная вставка, ..., ..., весь пакет записей и держат... ?


Ega23   (2008-08-29 14:55:00) [49]


> Особенно про ХП? Знаю такой стиль - применение ХП вместо
> DML.
> Мало того, что это геморрой, но еще и обрубает все пути
> автоматизации генерирования этих DML средами разработки.


понеслось...
Однако - пятница...


stas   (2008-08-29 14:53:00) [50]

sql   (29.08.08 14:47) [32]
Вот, а если пройдет одновременная вставка или апдейт 10 записей, Inserted будет содержать 10 записей, как ты их сохранишь в переменные?


stas   (2008-08-29 14:51:00) [51]

DiamondShark ©   (29.08.08 14:37) [29]
Это я писал выше.
sql   (29.08.08 14:48) [34]
он о пакетной вставке говорит :-D


sql   (2008-08-29 14:48:00) [52]


> Чего ты хз?

хто его знает...


Ты эти волшебные слова где услышал?

Кто его знает...


Курдль   (2008-08-29 14:47:00) [53]


> Polevi ©   (29.08.08 12:02) [4]
> профессионалы стараются избегать триггеров


Это сильно сказано! Также как и слова, что вся целостность данных может быть поддержана "... такими как PK-FK constraints... ХП"

Да. Даже не знаю, что ответить...
Особенно про ХП? Знаю такой стиль - применение ХП вместо DML.
Мало того, что это геморрой, но еще и обрубает все пути автоматизации генерирования этих DML средами разработки.

Вот пример для разминки ума.
Есть рефлексивная связь в сущности Х. (Дерево - в простонародьи).
Отследите-ка логическую ошибку "кольцевой связи" (т.е. если экземпляр сущности А является родительским для В. В - родительским для С. С - родительским для А).


sql   (2008-08-29 14:47:00) [54]


> stas ©   (29.08.08 14:45) [31]

Правильно.


stas   (2008-08-29 14:45:00) [55]

Я так понимаю в переменные ты хочешь записывать значения из Inserted,Deleted или я неправильно понял?


stas   (2008-08-29 14:42:00) [56]

sql   (29.08.08 13:58) [26]
Insert Into
select from

При этом Select возвращает не 1 запись а много.


DiamondShark   (2008-08-29 14:37:00) [57]


> А я хз, потому и спрашиваю...

Жжошь.
Чего ты хз? Ты эти волшебные слова где услышал?


sql   (2008-08-29 14:17:00) [58]


> Или что-то другое имелось в виду?

А я хз, потому и спрашиваю...


DiamondShark   (2008-08-29 14:16:00) [59]

Сорри, а что такое "пакетная вставка"?

Bulk insert, что-ли? Она производится быстро. Триггеры, кстати, при ней могут не срабатывать (зависит от опций).

Или что-то другое имелось в виду?


sql   (2008-08-29 13:58:00) [60]

Сорри, а как производится пакетная вставка ?


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо