是不是相当于给已经存在的table's already existing field加上一个外键而不是recreation?

Is it equivalent to add a foreign key to an already existent table's already existent field with already existent records than recreation?

我有三个 tableAABB .

A.IDB.IDint primary keyAB.AIDAB.BID 是整数并且 (AID, BID)AB.

primary key

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

如果我使用 Microsoft SQL Server Management Studio 右键单击​​ table 并单击设计,在 table 出现后我右键单击并单击关系并添加foreign key,我会得到完全相同的结果吗:

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

  2. AB 中的所有记录迁移到那里

  3. AB

  4. 中删除所有记录
  5. 改变AB的结构有两个foreign keys

  6. 将数据复制回来

  7. 删除临时table

?

没有区别。请注意,当尝试在 table 之间建立关系时,如果存在冲突数据,则不允许创建约束,例如:

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

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

如果您尝试创建外键,它将面临 3 在您的主 table 中不存在的问题。

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