SQL Server 2008 ::如何使用ALTER TABLE为另一列中的每个唯一值添加一个具有唯一编号的新列

时间:2016-07-07 17:00:13

标签: sql-server-2008 alter-table

为了更清楚,我有一个像这样的表

 Batch  domain
 ---------------
  14    xyz.com  
  14    abc.com  
  15    abc.com  
  15    xyz.com

我想要第3列,每个域都有唯一的编号,无论它们来自哪个批次都无关紧要。

2 个答案:

答案 0 :(得分:0)

通常,您不会通过添加列来执行此操作。您需要的是为具有名为DomainID的标识字段的域添加表。然后批处理域表存储ID而不是域名,它连接到域表以获取名称。

答案 1 :(得分:0)

要回答您的问题,可以使用NEWID()NEWSEQUENTIALID()

请注意,作为函数,可以通过触发器/存储过程/查询调用Newid,但只能将NEWSEQUENTIALID设置为DEFAULT类型列的uniqueidentifier值。

两者都有限制,如果发生停电,可以猜测序列号或导致集群,但如果安全性不是值的关注点,则可以管理。

ALTER TABLE [Schema_Name].[Table_Name]
ADD DomainID uniqueidentifier DEFAULT (NEWSEQUENTIALID() )

虽然已过时,Dave Pinal在两者之间有很好的解释。