SQL Update错误。 FK冲突

时间:2013-09-11 20:32:39

标签: sql sql-server sql-update

我正在尝试将组的名称从ASSY更改为Manufacturing,但我遇到了一些困难。它位于sql server数据库上。我在下面运行了查询。

 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“。”

有没有办法可以同时更新两个表以绕过这个错误?

2 个答案:

答案 0 :(得分:5)

  

有没有办法可以同时更新两个表来绕过   这个错误?

是。您可以在更新时定义要级联的外键。

我会考虑对其进行重组,以便groups具有整数代理键,并将文本描述作为单独的列。

这样可以避免在子表中多次重复相对较长的字符串Manufacturing

答案 1 :(得分: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;