2

我有一个 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
)

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

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

4

2 回答 2

3

试试这个:

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

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

于 2013-03-14T11:34:08.110 回答
2

如果你想要一个editable column不是身份列),那么试试这样:

小提琴演示在这里

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
于 2013-03-14T11:42:34.903 回答