多年前,我们在ms sql中创建了许多没有表关系的表。现在我们试图在这些表之间创建一个关系。问题在于许多开发人员在表中使用了假id。
例如:
表A,id(主键)->表B,aid必须是关系型的。但是开发人员使用了一些假的id,比如-1,-2来解决他们这边的一些问题。现在,当我试图在表a,id(主键)->表b,aid之间创建关系时,我得到了错误。
表A

ID | NAME
1  | name01
2  | name02

表B
ID | NAME   | AID
1  | name01 | 1
2  | name02 | -1
3  | name03 | -2

有没有办法解决这个问题,这是否意味着开发人员所做的一切,他们没有在sql中使用任何关系,他们在代码背后控制着一切。
谢谢

最佳答案

您需要将它们添加到引用表中。像这样的:

insert into a (id, name)
     select distinct aid, 'Automatically Generated'
     from b
     where not exists (select 1 from a where b.aid = a.id) and
           a.id is not null;

然后可以添加外键关系:
alter table b add constraint fk_b_aid foreign key (aid) references a(id);

关于sql - SQL表关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54553136/

10-12 19:07