环境
sqlserver2019,ODBC Driver 18 for SQL Server,python 3.11
问题
今天通过python往SQLServer写数据报
[ODBC Driver 18 for SQL Server][SQL Server]当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'xxx' 中的标识列插入显式值。
在 SQL Server 中,表的标识列(Identity Column)是由系统自动生成的唯一值,用于确保表中的每一行都有一个唯一的标识符。在某些情况下,我们可能需要手动插入一个值到标识列中,这时需要使用 IDENTITY_INSERT 命令来允许插入操作。然而,当 IDENTITY_INSERT 设置为 OFF 时,我们不能为标识列插入任何值,否则会出现错误。
解决
- 忽略主键的输入,就是插入时不写主键,由数据库进行主键自动生成
- 设置允许写入主键
SET IDENTITY_INSERT table_name ON;
设置完后可写入,在导数据时有用 然后使用完后可手动再开启主键自动生成
SET IDENTITY_INSERT table_name OFF;