SQL表关系

问题描述 投票:1回答:3

我们有很多在MS SQL,没有表关系在多年前建立的表。现在,我们正努力创造这些表之间的关系。问题是在很多的这些开发人员使用假身份证的表格中。

例如:表A,ID(主键) - >表B,AID需要是关系。但是,开发人员使用一些假身份证喜欢-1,-2解决自己身边的一些问题。而现在,当我尝试创建表A,ID(主键)之间的关系 - > TABLE B,AID,我得到的错误。

表A

ID | NAME
1  | name01
2  | name02

表B

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

有没有办法来解决这个问题,它是完全意义开发商做了什么,他们并没有在SQL中使用任何关系,他们控制代码隐藏一切。 谢谢

sql sql-server database relation
3个回答
4
投票

您需要添加这些到您的参考表。事情是这样的:

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);

0
投票

referential integrity的总体思路正是你不能有无效引用。

所以,最好的行动当然,这里将是吮吸它,并手动清理。在其他表中创建条目丢失或删除的记录。


0
投票

您也可以忽略对现有数据的检查。如果您使用的是SQL Server Management Studio中创建关系有选择这样做,就像在这个屏幕截图

enter image description here

希望能帮助到你

© www.soinside.com 2019 - 2024. All rights reserved.