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