Sql server 向SQL SERVER 2005中的现有表添加自动递增主键
我有一个包含8000行数据的表,并将添加更多数据。但是我忘了在开头放一个主键。这样每一行都有一个唯一的键。后来我添加了一个主键列。但该列现在为空 我希望第一行从ID1开始,一直递增到ID8000的最后一行。如何使用单个查询更新所有行Sql server 向SQL SERVER 2005中的现有表添加自动递增主键,sql-server,vb.net,Sql Server,Vb.net,我有一个包含8000行数据的表,并将添加更多数据。但是我忘了在开头放一个主键。这样每一行都有一个唯一的键。后来我添加了一个主键列。但该列现在为空 我希望第一行从ID1开始,一直递增到ID8000的最后一行。如何使用单个查询更新所有行 我使用的是SQL Server 2005。打开表设计,添加新列,然后选择列,并在标识规范中的属性中制作(Is标识)是。。 通过设置标识种子属性,可以从所需位置开始,默认情况下,它从1开始 如果您已经有标识列u也可以对其进行更新 步骤1:从表设计中的列中删除标识规范。
我使用的是SQL Server 2005。打开表设计,添加新列,然后选择列,并在标识规范中的属性中制作(Is标识)是。。 通过设置标识种子属性,可以从所需位置开始,默认情况下,它从1开始 如果您已经有标识列u也可以对其进行更新
步骤1:从表设计中的列中删除标识规范。
步骤2:使用光标从1开始更新表列。
步骤3:再次在表格设计中的列上应用标识规范
步骤4:通过查询重置标识列,从您想要的值。 e、 g
DBCC CHECKIDENT(“表名”,重新设定,8000)代码>
因此,下一个标识值将是8001
CREATE TABLE [dbo].[TheTable](
[TheID] [int] IDENTITY(1,1) NOT NULL,
[TheColumn] [nvarchar](100) NOT NULL,
CONSTRAINT [PK_TheTable] PRIMARY KEY CLUSTERED
(
[TheID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
INSERT INTO [dbo].[TheTable]
( [TheColumn] )
SELECT 'one'
UNION
SELECT 'two'
SELECT * FROM [dbo].[TheTable] TT
您可以根据唯一键更新表。
声明@i int=1
而(@i根据您的要求,您只需要一个sql查询,它将以增量方式使用新的主键值更新整个表。以下是:
UPDATE myTable
SET ID = ID + 1
其中ID是PK字段名
更新后,请不要忘记添加标识列,如下所示:
ALTER TABLE table
ADD ID INT IDENTITY
ALTER TABLE table
ADD CONSTRAINT PK_table
PRIMARY KEY(ID)
删除刚才添加的列。然后运行此
ALTER TABLE table
ADD ID INT IDENTITY
ALTER TABLE table
ADD CONSTRAINT PK_table
PRIMARY KEY(ID)
您是如何添加主键列的?您需要设置标识种子和增量值,是吗?如果您添加标识,该列将不会为空,它将自动生成值@Nithesh..在您标记为duplicate的链接中的可能重复项..我想它说明了如何添加主键..但问题是如何填充l在单个查询中递增的PK字段的空值。