Триггер, который изменяет несколько строк в другой таблице, после чего он был вызван в SQL Server 2005 - PullRequest
0 голосов
/ 23 мая 2009

Я попытался выполнить обновление таблицы, которая была инициирована обновлением другой таблицы, и я получил сообщение об ошибке:

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

Например, у меня есть эти таблицы:

table_1
===========
int id   (primary_key,identity)
nchar(10)  state_name

table_2
===========
int number

И после обновления таблицы_2 я хочу изменить все значения в столбце «имя_состояния» на «ложь»

create trigger tr on table_2
after update
as
update table_1 set state_name = 'false'

И когда я пытаюсь обновить table_2, я получаю сообщение об ошибке. Есть ли способ обойти это ограничение?

Ответы [ 2 ]

1 голос
/ 23 мая 2009

создать таблицу table_1 (id int identity (1,1) первичный ключ, имя_состояния char (10))

создать таблицу table_2 (число int) идти

создать триггер tr на table_2 после обновления как update table_1 set state_name = 'false' идти

вставить таблицу_1 выбрать «true» вставить таблицу_2 выберите 1

1009 * идти *

обновить таблицу_2 установленный номер = 2

выбрать * из таблицы_1

выбрать * из таблицы_2

Какую версию вы используете? Это хорошо сработало в SQL 2K8 и SQL 2K5. Проверьте свой код еще раз.

1 голос
/ 23 мая 2009

Добавьте ограничение первичного ключа в Table_2 (например, auto inc no), и все будет хорошо.

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