sql-server - 如何以编程方式更改标识列值?

标签 sql-server sql-server-2005 tsql identity sql-server-2005-express

我有一个 MS SQL 2005 数据库,其中有一个带有 ID 列的 Test 表。 ID 是一个身份列。

此表中有行,所有行都有相应的 ID 自动递增值。

现在我想像这样更改此表中的每个 ID:

ID=ID+1

但是当我这样做时,我收到一个错误:

Cannot update identity column 'ID'.

我已经尝试过这个:

    ALTER TABLE Test NOCHECK CONSTRAINT ALL 
    set identity_insert ID ON

但这并不能解决问题。

我需要为此列设置标识,但我也需要不时更改值。所以我的问题是如何完成这个任务。

最佳答案

你需要

set identity_insert YourTable ON

然后删除您的行并使用不同的标识重新插入它。

完成插入后,不要忘记关闭identity_insert

set identity_insert YourTable OFF

关于sql-server - 如何以编程方式更改标识列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/751522/

相关文章:

sql-server - 操作数类型冲突

mysql - 如何将子查询结果中的第一个值设置为 SQL 中的变量

c# - 使用存储过程连接数据库中的 4 个表?

sql-server-2005 - ASP SQL 错误处理

sql-server - 为什么在我的存储过程中将整数传递给小数时会出错?

SQL 脚本 - 检查 IP 是否已列入黑名单

sql-server - dapper-extensions GetList() 与 (nolock)

c# - 触发器在 Sql Server 的 BulkCopy 中不起作用

sql-server - SQL 分区、查询分析器和性能

sql - 在 SQL Server 2005 中使用 SSIS 从平面文件导入时如何保留 NULL 值