Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Вниз

Триггер   Найти похожие ветки 

 
avch   (2003-09-10 12:16) [0]

Есть в табл. поле EditDate, что значит дата редактирования записи,
не могу создать тригер AFTER UPDATE и присвоить этому полю системное время...
и еще, как обращааться к новому и старому значению поля в триггере?

Пишу вот так:
CREATE TRIGGER [OnPartnerTypeUpdate] ON [dbo].[PartnerType]
AFTER UPDATE
AS
EditDate = GetDate()
RETURN
выдается ошибка


 
Nikolay M.   (2003-09-10 12:17) [1]

inserted.EditDate = GetDate()


> как обращааться к новому и старому значению поля в триггере?

inserted, deleted


 
Johnmen   (2003-09-10 12:25) [2]

Триггер д.б. BEFORE UPDATE


 
Reindeer Moss Eater   (2003-09-10 12:36) [3]

В триггере AFTER UPDATE делается новый update полей, что вызывает событие AFTER UPDATE. Снова срабатывает триггер в котором снова модифицируется поле и снова возникает событие AFTER UPDATE из-за которого срабатывает триггер в котором .....


 
stone   (2003-09-10 12:38) [4]

You can specify one of two options to control when a trigger fires:

AFTER triggers fire after the triggering action (INSERT, UPDATE, or DELETE) and after any constraints are processed. You can request AFTER triggers by specifying either the AFTER or FOR keywords. Because the FOR keyword has the same effect as AFTER, triggers with the FOR keyword are also classified as AFTER triggers.

-- This statement uses the FOR keyword to generate an AFTER trigger.
CREATE TRIGGER TableCUpdateTrig ON TableC
FOR UPDATE
AS ...


 
Nikolay M.   (2003-09-10 12:40) [5]

Пардон, поспешил с ответом.
У меня такой тригер описан так:

if not update(modification_date)
begin
UPDATE firm
SET modification_date = getdate()
WHERE id_firm IN (SELECT id_firm FROM inserted)
end


 
АлексейК   (2003-09-10 12:46) [6]

В MSSQL нет триггера BEFORE UPDATE, фактически есть два типа триггера
1. Триггер выполняется после (after) вставки записи в таблицу, при этом запись реально в таблице существует (то есть все ограничения целостности ненарушены), но не закомичена.
2. Триггер (instead of). Триггеры этого типа выполнятются взамен пользовательских действий. То есть запрос пользователя не выполняется, а вносятся лишь изменения, осуществляемые в теле триггера.
>Nikolay M. ©
deleted и inserted представляют собой специальные таблицы, а точнее логические структуры, которые сервер создает для каждого триггера. В эти таблицы запрещено вносить изменения, так что они доступны в режиме только для чтения. Это своего рода частичная копия журнала транзакция, представленная в таблином виде для доступа, в которой отображается лишь одна транзакция.
Следовательно inserted.EditDate = GetDate() ошибочная конструкция.


 
Nikolay M.   (2003-09-10 12:52) [7]


> АлексейК (10.09.03 12:46) [6]

Ну, сказал же, что поторопился, сразу давайте все бить лежачего :) И что это за таблицы я прекрасно знаю, но перекосило меня: может человека иногда перекосить?

А правильный ответ я все-таки привел. По крайней мере в том виде, как это реализовано у меня.


 
Nikky   (2003-09-10 14:41) [8]


> Nikolay M. © (10.09.03 12:40) [5]

у вас ошибка здесь:

> WHERE id_firm IN (SELECT id_firm FROM inserted)


in для уникальных ключей использовать глупо, они для того и уникальные индексы, к тому же кластерные


 
Nikolay M.   (2003-09-10 15:14) [9]


> Nikky © (10.09.03 14:41) [8]
> у вас ошибка здесь

Да ну?! И в чем же ошибка?


> in для уникальных ключей использовать глупо, они для того
> и уникальные индексы, к тому же кластерные

Сам-то понял, что сказал? :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-96247
Starkom
2003-09-17 15:01
2003.09.29
Вопрос об удивительном глюке пропертей компонентов VCL


1-96256
Term
2003-09-18 11:31
2003.09.29
Поясните в чом проблема?


1-96259
s_ser
2003-09-16 14:00
2003.09.29
Проблема с ActiveX в WinXP


9-96048
Juster~
2003-03-22 21:11
2003.09.29
Программист или любитель?


6-96336
Лазуточкин Сергей
2003-07-31 12:03
2003.09.29
Кнопки в Internet Explorer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский