【发布时间】:2016-07-07 17:00:12
【问题描述】:
为了更清楚,我有一张这样的表
Batch domain
---------------
14 xyz.com
14 abc.com
15 abc.com
15 xyz.com
我想要第三列,每个域都有唯一的编号,不管它们来自哪个批次。
【问题讨论】:
标签: sql-server-2008 alter-table
为了更清楚,我有一张这样的表
Batch domain
---------------
14 xyz.com
14 abc.com
15 abc.com
15 xyz.com
我想要第三列,每个域都有唯一的编号,不管它们来自哪个批次。
【问题讨论】:
标签: sql-server-2008 alter-table
通常,您永远不会通过添加列来做到这一点。您需要为具有名为 DomainID 的标识字段的域添加一个表。然后 Batch 域表存储的是 ID 而不是域名,它加入到域表中以获取名称。
【讨论】:
要回答您的问题,可以使用NEWID() 和NEWSEQUENTIALID()。
请注意,作为函数,Newid 可以通过触发器/存储过程/查询来调用,但 NEWSEQUENTIALID 只能设置为 DEFAULT 类型的列的值 uniqueidentifier。
两者都有限制,如果发生中断,可以猜测 SEQUENTIAL ID 或导致集群,但如果安全性不是该值的问题,则可以管理。
ALTER TABLE [Schema_Name].[Table_Name]
ADD DomainID uniqueidentifier DEFAULT (NEWSEQUENTIALID() )
虽然已经过时,但Dave Pinal 在两者之间有很好的解释。
【讨论】: