Триггер, который изменяет несколько строк в таблице diffend, затем был вызван в SQL Server 2005
Я попытался выполнить обновление в таблице, которое было вызвано обновлением в другой таблице, и я получил сообщение об ошибке:
Значение или значения строк, обновленные или удаленные, не делают строку уникальной или изменяют несколько строк.
Например, у меня есть следующие таблицы:
table_1
===========
int id (primary_key,identity)
nchar(10) state_name
table_2
===========
int number
И после обновления таблицы_2 я хочу изменить все значения в столбце 'state_name' на 'false'
create trigger tr on table_2
after update
as
update table_1 set state_name = 'false'
И когда я пытаюсь обновить table_2, я получаю сообщение об ошибке.
Есть ли способ обойти это ограничение?
Ответы
Ответ 1
создать таблицу table_1 (id int identity (1,1) primary key, state_name char (10))
создать таблицу table_2 (число int)
идти
создать триггер tr на table_2 после обновления как update table_1 set state_name = 'false'
идти
insert table_1 выберите 'true'
insert table_2 выберите 1
идти
update table_2 set number = 2
выберите * из таблицы_1
выберите * из таблицы_2
Какую версию вы используете? Это хорошо отразилось на SQL 2K8 и SQL 2K5. Проверьте код еще раз.
Ответ 2
Добавьте ограничение первичного ключа в Table_2 (например, auto inc no), и вы будете в порядке.