sql-server-2008 - 在 SQL Server 2008 中允许重复的唯一标识符吗?

标签 sql-server-2008 foreign-keys primary-key duplicates uniqueidentifier

假设我的数据库中只有 2 个表。这两个表是:InputType 和 HardwareType。每个表都使用 GUID 作为它们的主键。从 InputType 到 HardwareType 有一个外键。

我遇到的问题是会有多行 InputType 引用 HardwareType 中的同一行(即每种类型的硬件有多个输入)。问题是我在 InputType 中引用 HardwareType 中的 GUID 的列不允许重复——因此,不允许每个硬件类型有多个输入。

我可能可以通过将 InputType 中列的数据类型设置为“varchar”或其他东西而不是“uniqueidentifier”来解决这个问题,但我必须这样做吗?当它不是主键而是另一个表的外键时,是否有某种方式允许重复的 GUID 条目?

帮助表示赞赏!谢谢。

最佳答案

仅仅因为数据类型是 UNIQUEIDENTIFIER并不意味着您不能在该列中多次使用相同的值!

CAN 事实上 - 当然,除非您明确添加了 UNIQUE CONSTRAINTUNIQUE INDEX在该列上 - 这是您的选择,但默认情况下不会应用任何内容,除非您自己做一些事情。

所以你应该可以引用HardwareType来自 InputType使用 UNIQUEIDENTIFIER - 即使 InputType 中的多行将引用 HardwareType 中的同一行- 完全没有问题。

关于sql-server-2008 - 在 SQL Server 2008 中允许重复的唯一标识符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523619/

相关文章:

mysql - 这种情况下有必要使用外键吗?

sql - 删除数据库中的所有行后,第一个主键是 1005

sql-server-2008 - 如何在sql server 2008中仅显示偶数或奇数行?

sql-server - 在 TSQL 上尝试并捕捉 - 捕捉未捕捉

MySQL 和外键

php - 使用 PHP 获取外键

mysql - 为什么不使用索引(在主键列上)?

ruby-on-rails - 创建没有主键的连接表

sql-server-2008 - 如何提高在 2005 上运行良好的 SSIS 2008 包的更新性能?

sql-server-2008 - SQL的 “The media set has 2 media families but only 1 are provided. All members must be provided.”错误还有其他解决方案吗?