📅  最后修改于: 2023-12-03 15:09:50.592000             🧑  作者: Mango
在 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 时要注意加锁,避免出现冲突。