SQL添加具有递增值的新可编辑(非标识)列

时间:2013-03-14 11:31:22

标签: sql sql-server tsql

我有一个SQL Server表,我想在我的表中添加一个新列,用于自定义排序。不是标识列,因为我需要能够在创建后更改值。

我的桌子是

CREATE TABLE [dbo].[Ponies] (
    [Name] [nvarchar](50) NOT NULL
)

使用[{Name: Rarity},{Name: Applejack}]等数据。

我希望我的桌子变得像

CREATE TABLE [dbo].[Ponies] (
    [Name] [nvarchar](50) NOT NULL,
    [IndexNumber] [int] NOT NULL
)

我希望在alter语句后数据类似于[{Name: Rarity, IndexNumber:1},{Name: Applejack, IndexNumber:2}]。关键是行的顺序可以在创建后更改,这意味着当添加新行时,可以更改旧行的顺序。

如何执行ALTER语句,以便为每个现有数据项添加增量IndexNumber

2 个答案:

答案 0 :(得分:3)

试试这个:

ALTER TABLE dbo.Ponies
ADD IndexNumber INT IDENTITY(1,1) NOT NULL

这会为您的表添加一个“identity”列 - 从每行开始,从1开始递增1。它将自动为所有要插入的新行设置。

答案 1 :(得分:2)

如果您想要editable column不是标识列),请尝试这样:

Fiddle demo here

alter table dbo.Ponies
add [IndexNumber] int not null default 0
Go

declare @index int = 0 
update dbo.Ponies set @index = [IndexNumber] = @index + 1

select * from dbo.Ponies