📌  相关文章
📜  当 identity_insert 设置为 off 时,无法在表中插入标识列的显式值 (1)

📅  最后修改于: 2023-12-03 15:09:50.592000             🧑  作者: Mango

当 identity_insert 设置为 off 时,无法在表中插入标识列的显式值

在 SQL Server 中,identity 列是指自动递增的整数列。当插入数据到一个表的 identity 列时,如果 identity_insert 设置为 off,那么这个列将会自动递增生成一个值。因此,任何尝试在列上插入显式值的操作都会被拒绝。

具体而言,如果你在一张表上设置了 identity 列,并尝试插入显式值,你将会遇到这个错误信息:

Cannot insert explicit value for identity column in table 'table_name' when IDENTITY_INSERT is set to OFF.

这时候,你需要使用 T-SQL 命令 SET IDENTITY_INSERT table_name ON 来启用 identity_insert,允许插入显式值。插入完成后,你需要使用同样的命令,将 identity_insert 设置为 off。

这个问题一般在向一个已生成的 identity 列插入数据时会遇到。如果你希望保存一个特别设定的值,你可以在生成表时设置一个初值。

在实际开发过程中,我们需要注意 SQL Server 中 identity 列的使用,以避免出现不能插入显式值的错误。同时,设置 identity_insert 时要注意加锁,避免出现冲突。