是不是相当于给已经存在的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?
我有三个 table
:A、AB 和 B .
A.ID 和 B.ID 是 int
primary key
。 AB.AID 和 AB.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
,我会得到完全相同的结果吗:
创建一个具有相同结构的临时table
将 AB 中的所有记录迁移到那里
从 AB
中删除所有记录
改变AB的结构有两个foreign keys
将数据复制回来
删除临时table
?
没有区别。请注意,当尝试在 table 之间建立关系时,如果存在冲突数据,则不允许创建约束,例如:
Tbl1 (tbl1_id PK)
-----
1
2
Tbl2 (tbl2_id PK, tbl1_id)
-----
1
2
3
如果您尝试创建外键,它将面临 3 在您的主 table 中不存在的问题。
所以是的,它们是等效的,请注意 SQL 服务器内置了安全防护措施来防止无效的关系数据。
我有三个 table
:A、AB 和 B .
A.ID 和 B.ID 是 int
primary key
。 AB.AID 和 AB.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
,我会得到完全相同的结果吗:
创建一个具有相同结构的临时
table
将 AB 中的所有记录迁移到那里
从 AB
中删除所有记录
改变AB的结构有两个
foreign keys
将数据复制回来
删除临时
table
?
没有区别。请注意,当尝试在 table 之间建立关系时,如果存在冲突数据,则不允许创建约束,例如:
Tbl1 (tbl1_id PK)
-----
1
2
Tbl2 (tbl2_id PK, tbl1_id)
-----
1
2
3
如果您尝试创建外键,它将面临 3 在您的主 table 中不存在的问题。
所以是的,它们是等效的,请注意 SQL 服务器内置了安全防护措施来防止无效的关系数据。