![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение записи в тригере [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().
Удачи.