2

可以说我在我的数据库中只有2个表格。这两个表是:InputType和HardwareType。每个表使用GUID作为其主键。有一个从InputType到HardwareType的外键。允许SQL Server 2008中的重复uniqueidentifiers?

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

我可能通过将InputType中的列的数据类型设置为“varchar”或某物而不是“uniqueidentifier”来解决此问题,但是我必须这样做吗?有没有办法在不是主键的情况下允许GUID的重复条目,而是另一个表的外键?

帮助表示赞赏!谢谢。

+0

嗯,否:uniqueidentifier的性质是不允许重复的条目。如果它不唯一,那么不要将其标记为唯一。 – Femi

+0

仅仅因为数据类型是'UNIQUEIDENTIFIER'并不意味着你不能在那里有多次相同的值!你** CAN ** - 除非你明确地在该列上添加了'UNIQUE CONSTRAINT'或'UNIQUE INDEX' –

+1

完美。这是我想听到的。在“索引/键”部分找到“唯一”标志。现在我可以像我需要的那样在uniqueidentifier字段中输入重复项。谢谢@marc_s! – ImGreg

回答

5

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

CAN其实 - 当然,除非你明确对列增加了UNIQUE CONSTRAINTUNIQUE INDEX - 这是你的选择,但默认应用什么的,除非你自己做一些事情。

所以,你应该能够使用UNIQUEIDENTIFIERInputType引用HardwareType - 即使在InputType多个行会引用HardwareType同一行 - 没有问题的。

+1

你也应该阅读@marc_s在类似的问题上发布关于使用guid作为键的更多建议http://stackoverflow.com/questions/2996031/guid-primary-foreign-key-dilemma-sql-server – RThomas

+1

这很有用以及。感谢大家! – ImGreg