【问题标题】:Using foreign key as RowGuidCol使用外键作为 RowGuidCol
【发布时间】:2026-02-11 17:35:02
【问题描述】:

我有以下情况: * 我有一个包含表 A 和 B 的现有数据库。 * 表 A 有一个主键“ID”,其类型为 uniqueidentifier,不可为空并标记为 RowGuidCol。 * 表B有一个外键“TableA_ID”,它引用表A中的主键“ID”。

问题: 有什么原因,为什么我不应该将表 B 中的外键“ID”设置为 RowGuidCol? 根据定义,“ROWGUIDCOL 属性指示列中的 uniqueidentifier 值唯一标识表中的行。” [https://technet.microsoft.com/en-us/library/ms190215(v=sql.105).aspx] 所以没关系,值在多个表中不是唯一的,对吧?

感谢您对此主题的任何想法!

【问题讨论】:

    标签: sql sql-server foreign-keys


    【解决方案1】:

    是的,这是有充分理由的。 RowGUID 意味着每一行中的值对于该表是唯一的。你在这里有一个外键。如果表之间存在 1:1 的关系,那么您可以设置此属性,因为每一行将与 tableA 中的一行且只有一行相关联。这也意味着您可以将此列用作主键和外键。但是如果表之间的关系是 1:m,那么您就不能这样做,因为该表中的任意数量的行都可以具有相同的 TableA_ID 值(当它们与 tableA 中的同一行相关联时)。而且由于这主要用于复制,请参考MS SQL Server Row GUID Column

    【讨论】:

    • 非常感谢!我确实有 1:1 的关系,所以继续设置属性。