триггер для обновления - PullRequest
0 голосов
/ 20 ноября 2010

у меня есть триггер в sqlserver для таблицы (вкладки)

Create TRIGGER Trig_TabsUp
on Tabs
For UPDATE 
AS 
insert into tabs_Update select * from deleted 

таблица tabs_update такая же, как вкладки, но поле идентификатора во вкладках не является идентификатором в tabs_update, это просто int.Это дает мне эту ошибку

значения строк, обновленные или удаленные, либо не делают строку уникальной, либо не изменяют несколько строк 2 строки

Я пытался установить идентичностьполе к таблице Tabs_Update, но ошибка все та же

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Попробуйте добавить SET NOCOUNT ON к определению триггера.

0 голосов
/ 20 ноября 2010

Я предполагаю, что у вас есть первичный ключ или уникальное ограничение для поля идентификатора. Это проблема при втором обновлении той же записи. Sp_help Tabs_update скажет вам, кто они.

Вы были правы, чтобы сделать поле идентификатора справедливым и инт. Но вам, вероятно, следует добавить поле «Дата обновления» и сделать первичный ключ составным из идентификатора и «Дата обновления».

Также делать выбор * почти всегда считается плохой идеей. Ваш триггер сломается, если вы добавите новое поле и забудете добавить таблицу обновлений. Он также сломается, если вы измените порядок полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...