2011-05-26 78 views
2

我有一個表,其中我有一個INT IDENTITY(1,1)PRIMARY KEY字段,並在其旁邊有一個UNIQUEIDENTIFIER字段,我希望在表上每次插入時自動分配這個字段。我嘗試設置DEFAULT NEWID(),但它只在我做的時候才起作用INSERT INTO TableName VALUES (DEFAULT, a, b, c, d, ...).我希望能夠做到的是我NSERT INTO TableName VALUES (a, b, c, d, ...)和UNIQUEIDENTIFIER字段被自動分配,就像主鍵字段一樣。那可能嗎?請不要這樣,儘管這是一個有效的做法,但我不希望將該字段作爲(表的一部分)主鍵。是否可以在每次插入時自動分配一個UNIQUEIDENTIFIER字段?

+0

該字段是否可以空? – 2011-05-26 09:26:48

+0

否...它必須始終與NULL不同。 – Miguel 2011-05-26 09:27:17

+0

你有沒有考慮過觸發器? – 2011-05-26 09:30:29

回答

4

使用列名單,然後和省略PK,GUID列

INSERT INTO TableName (col3, col4, col5, ...) 
VALUES (a, b, c, d, ...) a 

周圍使用缺少列列表,這是最好的做法反正默認的作品。例如,如果您重新排序或添加列,該怎麼辦?並使用觸發器不是最佳的或可伸縮性

編輯:使用觸發器是一種解決方案,以避免最佳實踐...並不會規模太好

+0

可能更好地說「改變PK」而不是忽略它 - 他可能會認爲沒有PK /聚集索引的表是可以的。 – 2012-06-30 02:04:19

0

應當在表模式的默認值。因此,在設置默認值後,您無需擔心該列。

打開表格設計窗口並選擇應該佔據GUID信息的列。欲瞭解更多信息,請參閱下面的屏幕截圖。

enter image description here

因此,通過設置(NEWID())作爲默認值將讓你插入的記錄,而無需在INSERT語句中包含此列名。

請讓我知道任何混亂

1

GBN是正確的情況下。我只需添加其他幾點就可以考慮。

如果你的桌子上有一個唯一的ID,那麼你爲什麼要或需要一個UNIQUEIDENTIFIER?你應該選擇一個或另一個作爲你的PK,但不能兩個都選。另外,在爲數據庫選擇默認值時,請選擇NEWSEQUENTIALID()而不是NEWID()。

相關問題