可能是重复问题:
在列上设置标识
我有一个表,例如Messages,其中有一个名为Serno的列。 Serno记录每个消息的序列号。 但是系统非常旧,使用max(serno)命令创建此序列号。 现在,我正在尝试将此列更改为标识,但我不想失去每条消息的当前序列号。
有没有解决方案。
我已经尝试创建一个新的标识列并将值从serno复制到那里,但它不起作用。 创建新表也不起作用,因为数据库会为每个消息提供新的序列号,而我不希望如此。
欢迎任何想法。
提前致谢
M.A
可能是重复问题:
在列上设置标识
我有一个表,例如Messages,其中有一个名为Serno的列。 Serno记录每个消息的序列号。 但是系统非常旧,使用max(serno)命令创建此序列号。 现在,我正在尝试将此列更改为标识,但我不想失去每条消息的当前序列号。
有没有解决方案。
我已经尝试创建一个新的标识列并将值从serno复制到那里,但它不起作用。 创建新表也不起作用,因为数据库会为每个消息提供新的序列号,而我不希望如此。
欢迎任何想法。
提前致谢
M.A
您尝试过在设计视图中打开表格,选择您的列,并将 IdentitySpecification
设置为 Yes
吗?(如果您有许多行,则可能需要一些时间,因为它会内部生成完整的表格副本)
您无法更改现有列并将其设置为标识列。
您需要创建一个临时表,并将值插入其中。最后,您必须删除实际表并将临时表重命名为实际表。
CREATE TABLE dbo.NewTable(ID int IDENTITY(1, 1),<other columns>)
SET IDENTITY_INSERT dbo.NewTable ON
INSERT INTO dbo.NewTable ( Id, <other columns>)
SELECT Id, <other columns> FROM <actual_table>
go
SET IDENTITY_INSERT dbo.NewTable OFF
go
DROP TABLE your_table
go
Exec sp_rename 'NewTable', 'actual_table'