SQL 表关系

标签 sql sql-server database relation

我们在 MS SQL 中有很多表是多年前在没有表关系的情况下创建的。现在我们正在尝试在这些表之间创建关系。问题在于许多开发人员在表中使用了假 ID。

例如: TABLE A,ID(主键)-> TABLE 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 表关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54553136/

相关文章:

sql server 2008 删除重复项

mysql - SQL 查询在主机服务器上不工作,但在本地工作

java - 在云端建立数据库

sql - 堆表中页面的输入行与 8060 字节的页面大小不匹配

MySQL(版本 5.5): Why `JOIN` is faster than `IN` clause?

sql - Me.Dirty move 当前选择的记录

sql - 在 sql server 中查找第二条最后记录(如果可用,否则为最后一条记录)

sql - Access - row_number 函数?

c# - 在 Microsoft SQL Server 2008 中选择什么数据类型来存储纯文本?

php - 从数据库中读取单个值并将其保存在变量中