[英]How can I add a column and populate it with a number after sorting a table?
我有这张桌子:
CREATE TABLE [dbo].[Phrase]
(
[PhraseId] [uniqueidentifier] NOT NULL,
[PhraseNum] [int] NULL
[English] [nvarchar](250) NOT NULL,
PRIMARY KEY CLUSTERED ([PhraseId] ASC)
) ON [PRIMARY]
GO
我想做的是对表进行排序,并用一个数字填充列PhraseNum
,其中已排序表的第一行为1
,此后的每一行的值都比之前的大一个。
在SQL Server中,您可以使用一个标识列来做到这一点:
CREATE TABLE [dbo].[Phrase](
[PhraseId] [uniqueidentifier] NOT NULL PRIMARY KEY,
[PhraseNum] int identity(1, 1) NOT NULL
[English] [nvarchar](250) NOT NULL
);
将唯一标识作为(集群)主键是一个非常非常糟糕的主意。 为什么? 新值不排序。 这意味着必须为每个insert
重新排序数据-导致碎片。
您应该将PhraseNum
列用作主键。
艾伦(Alan),如果PhraseNum中的数据并不重要(如您在帖子中所见),则可以删除该列并添加为标识列
ALTER TABLE Phrase drop column PhraseNum ;
ALTER TABLE Phrase Add PhraseNum int identity(1,1) not null;
PhraseNum的编号将由聚簇索引排序标准完成,因此由PhraseId进行
但是先在测试数据库上进行测试是安全的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.