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

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

Изменение записи в тригере [MSSQL, ]


MVova ©   (2002-01-21 12:04:00) 

Всем привет.
Тригер INSERT как изменить запись которая вставляется?
Делаю так

CREATE TRIGGER Tab1_INSERT ON Tab1 FOR INSERT AS BEGIN
DECLARE @DateEdit DateTime
declare cur cursor local for select DateEdit from inserted

open cur
fetch cur into@DateEdit
while @@FETCH_STATUS = 0 BEGIN
SELECT @DateEdit = 1000
fetch cur into @DateEdit
end
close cur
deallocate cur
end

но поле DateEdit равно 0 :-((


handra   (2002-01-22 10:51:00) [1]

если надо установить дату изменения, то используй
COLUMNS_UPDATED() - см. хелп


TSV   (2002-01-21 14:31:00) [2]

> MVova
А для этого существуют параметры Recursive triggers на уровне БД и nested triggers на уровне сервера.


Delirium   (2002-01-21 13:27:00) [3]

Кусок рабочего триггера:

UPDATE r_Names SET dModiDataTime = GETDATE() WHERE id_Name IN (select id_Name FROM Deleted)


MVova   (2002-01-21 13:18:00) [4]

А как быть с тригером UPDATE надо вставить даду изменения записи.
Если сделать UPDATE из тригера UPDATE то он не зациклится?


TSV   (2002-01-21 13:04:00) [5]

То есть, если триггер, то поле - nullable, если default-значение, то поле - not null.


TSV   (2002-01-21 12:59:00) [6]

Может у тебя поле допускает вставку null-значений? Если да, то убери это.


MVova   (2002-01-21 12:48:00) [7]

> TSV DEFAULT GETDATE().
Сработало, а неработает когда я запись вставлял в EM


MVova   (2002-01-21 12:46:00) [8]

> TSV Но можно сделать проще: присвоить столбцу DEFAULT GETDATE().

Пробовал значения поля после вставки Null :((
У меня SQL 7.0, SP 3


TSV   (2002-01-21 12:26:00) [9]


CREATE TRIGGER TAB1_INS ON TAB1 FOR INSERT AS

UPDATE TAB1
SET T.DateEdit = GETDATE()
FROM TAB1 T, INSERTED I
WHERE T.KEY_FIELD = I.KEY_FIELD

Но можно сделать проще: присвоить столбцу DEFAULT GETDATE().

Удачи.


Наверх

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