我有一个表,其中我有一个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字段会像主键字段一样自动分配。那可能吗?请注意,尽管这是一个有效的事情,我不希望将此字段作为表的主键(的一部分)。
答案 0 :(得分:4)
然后使用列列表并省略PK,GUID列
INSERT INTO TableName (col3, col4, col5, ...)
VALUES (a, b, c, d, ...) a
使用DEFAULT可以解决缺少列列表的问题,这无论如何都是最佳实践。例如,如果您重新排序或添加列,该怎么办?并且使用触发器不是最佳的或可扩展的
编辑:使用触发器是一种避免最佳实践的解决方法......并且不会扩展得太好
答案 1 :(得分:1)
如果您的桌子上有唯一的ID,那么您为什么要或不需要UNIQUEIDENTIFIER?您应该选择其中一个作为您的PK,但不能同时选择两者。此外,在为数据库选择默认值时,请选择NEWSEQUENTIALID()而不是NEWID()。
答案 2 :(得分:0)
它应该是表架构中的默认值。因此,在设置默认值后,您无需担心此列。
打开表设计窗口并选择应该占用GUID信息的列。有关详细信息,请参见下面的屏幕截图。
因此,通过将(newID())设置为默认值,您可以插入记录而不在insert语句中包含此列名。
如果有任何混淆,请告诉我