是否相当于将一个外键添加到已存在的表中已存在的记录而不是重新创建的已存在的字段?

时间:2016-10-20 15:53:45

标签: sql-server ssms

我有三个table s: A AB B

A.ID B.ID int primary key AB.AID AB.BID 为int,(AID,BID) AB的primary key

我需要确保 AB.AID foreign key,这将引用 A(ID) AB.BID 将是foreign key,将引用 B(ID)

如果我,使用Microsoft SQL Server Management Studio右键单击该表并单击“设计”,在表格出现后我右键单击并单击“关系”并添加foreign key,我将得到与如果我愿意:

  1. 创建具有相同结构的临时table

  2. AB 那里

  3. 迁移所有记录
  4. AB

  5. 中删除所有记录
  6. AB 的结构更改为两个foreign keys

  7. 将数据复制回来

  8. 删除临时table

1 个答案:

答案 0 :(得分:2)

没有区别。请注意,在尝试构建表之间的关系时,如果存在以下冲突数据,则不允许创建约束:

Tbl1 (tbl1_id PK)
-----
1
2

Tbl2 (tbl2_id PK, tbl1_id)
-----
1
2
3

如果您尝试创建外键,则表示主表中不存在3。

所以是的,它们是等价的,只需注意SQL服务器内置安全保护措施以防止无效的关系数据。