2

我正在尝试将组的名称从 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”中。”

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

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 回答