我们有很多在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中使用任何关系,他们控制代码隐藏一切。 谢谢
您需要添加这些到您的参考表。事情是这样的:
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);
referential integrity的总体思路正是你不能有无效引用。
所以,最好的行动当然,这里将是吮吸它,并手动清理。在其他表中创建条目丢失或删除的记录。