我有一个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
?
答案 0 :(得分:3)
试试这个:
ALTER TABLE dbo.Ponies
ADD IndexNumber INT IDENTITY(1,1) NOT NULL
这会为您的表添加一个“identity”列 - 从每行开始,从1开始递增1。它将自动为所有要插入的新行设置。
答案 1 :(得分: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