Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Триггер работал в SQL 2005 не работает в SQL 2008  [new]
TheIgor
Member

Откуда:
Сообщений: 29
Раньше в БД работал триггер, который при изменение значения поля в строке таблицы записывал дату изменения в другую таблицу.

CREATE TRIGGER ChangeActivityDescription
ALTER UPDATE Description ON ActivityBase acb

BEGIN

INSERT INTO ba_change_actv_desc_log VALUES (getdate(), acb.ActivityID)

END

Потом БД мигрировали на SQL 2008 с SQL 2005.

Сейчас хочу создать аналогичный триггер, но выдается ошибка "Incorrect syntax near the keyword 'ALTER'." При запуске кода выше ошибка такая же. Подскажите, в чем проблема?
11 май 12, 14:41    [12536719]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
komrad
Member

Откуда:
Сообщений: 5756
TheIgor,

"alter update" -> "after update"
11 май 12, 14:45    [12536758]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Синтаксис конструкции триггера хорошо описан в хелпе. С примерами.
11 май 12, 14:45    [12536763]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
Glory
Member

Откуда:
Сообщений: 104751
TheIgor
Потом БД мигрировали на SQL 2008 с SQL 2005.

Сейчас хочу создать аналогичный триггер, но выдается ошибка "Incorrect syntax near the keyword 'ALTER'." При запуске кода выше ошибка такая же. Подскажите, в чем проблема?

Эта команда не могла работать ни в какой версии
Потому что сначала идет имя таблицы, а потом уже тип операции
11 май 12, 14:49    [12536815]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
TheIgor
Member

Откуда:
Сообщений: 29
Спасибо за замечания, буду help читать тогда
11 май 12, 15:33    [12537302]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
TheIgor
Member

Откуда:
Сообщений: 29
Еще вопрос, я написал триггер

ALTER TRIGGER [dbo].[ChangeAccountOwner]
ON [dbo].[AccountBase]
AFTER UPDATE
AS
IF UPDATE (OwningUser)

BEGIN

UPDATE dbo.AccountBase set CFD_change_owner_date = (select getdate())

END

но он апдейтит все записи в таблице, а мне нужно записывать дату изменения конкретно в ту запись, которая изменилась. Как этого добиться?
11 май 12, 18:04    [12538383]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
TheIgor,

сначала надо в справке прочитать про таблицы inserted и deleted
11 май 12, 18:07    [12538400]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
TheIgor
Member

Откуда:
Сообщений: 29
Спасибо, разобрался
11 май 12, 18:17    [12538460]     Ответить | Цитировать Сообщить модератору
 Re: Триггер работал в SQL 2005 не работает в SQL 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
TheIgor
Спасибо, разобрался
Надо ещё навсегда забыть про функции UPDATE() и COLUMNS_UPDATED()
11 май 12, 19:54    [12538869]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить