我正在尝试将组的名称从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“。”
有没有办法可以同时更新两个表以绕过这个错误?
答案 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;