Триггер, который изменяет несколько строк в таблице 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), и вы будете в порядке.