2

グループの名前を ASSY から Manufacturing に変更しようとしていますが、問題が発生しています。SQLサーバーデータベース上にあります。以下のクエリを実行しました。

 Update groups
 set  group_code= 'Manufacturing'
 where site_code = 'TMMBC' and group_code = 'ASSY' and group_description  = 'Manufacturing'

しかし、このエラーが返されました-「UPDATEステートメントはREFERENCE制約「user_groups_FK_2」と競合しました。競合はデータベース「eci」、テーブル「dbo.user_groups」で発生しました。」

このエラーを回避するために両方のテーブルを同時に更新する方法はありますか?

4

2 に答える 2

5

このエラーを回避するために両方のテーブルを同時に更新する方法はありますか?

はい。更新時にカスケードする外部キーを定義できます。

groupsただし、整数の代理キーを持ち、テキストの説明を別の列として持つように再構築することを検討します。

Manufacturingこれにより、子テーブルで比較的長い文字列を何度も繰り返す必要がなくなります。

于 2013-09-11T20:33:58.503 に答える
2

テーブル user_groups の定義が次のようになっていると仮定します。

create table dbo.user_groups (
    group_code varchar(100),
    -- other fields
    constraint user_groups_fk_2 foreign key (group_code) references dbo.groups (group_code)
);

テーブル定義を変更して、次のように外部キー カスケードを設定します。

create table dbo.user_groups (
    group_code varchar(100),
    -- other fields
    constraint user_groups_fk_2 foreign key (group_code) references dbo.groups (group_code) on delete cascade on update cascade
);

または ALTER TABLE ステートメントを介して:

alter table dbo.user_groups drop constraint user_groups_fk_2;

alter table dbo.user_groups add constraint user_groups_fk_2 foreign key (group_code) references dbo.groups (group_code) on delete cascade on update cascade;
于 2013-09-11T20:42:30.173 に答える