SQL Server中手动插入时提示不能为表中的标识列插入显式值
在SQL Server中使用Navicat for SQL Server往数据库中插入数据时时出现如下错误提示:
[SQL]INSERT INTO [gps_car_type] ([id], [CarType], [CTCode]) VALUES (1, '小轿车', '0') [Err] 23000 - [SQL Server]当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'gps_car_type' 中的标识列插入显式值。
刚开始以为是工具的问题,于是切换到Microsoft SQL Server Management Studio上进行执行,还是提示相同错误,结果每次都执行失败。
解决办法是将显式值插入表的标识列中的功能打开,用完这个功能之后再关闭。
###允许将显式值插入表的标识列中 ON-允许 OFF-不允许 set identity_insert ClassInfo ON; INSERT INTO [gps_car_type] ([id], [CarType], [CTCode]) VALUES (2, '小巴', '0'); GO INSERT INTO [gps_car_type] ([id], [CarType], [CTCode]) VALUES (3, '中巴', '0'); GO INSERT INTO [gps_car_type] ([id], [CarType], [CTCode]) VALUES (4, '大巴', '0'); GO set identity_insert ClassInfo OFF;
在执行之前开启identity_insert,在执行完成之后关闭identity_insert, 这样执行之后数据库中就会加入自定义主键值的数据了。