SET IDENTITY_INSERT <表名> OFF的作用、使用时机及放置位置是什么?
SET identity_insert product OFF 作用
该命令用于恢复product表标识列的默认行为:
- 关闭手动插入标识列的权限,避免后续误操作向标识列插入自定义值,导致自增序列冲突、数据主键重复
- 后续往
product表插入数据时,无需再显式指定标识列(PID)的值,数据库会自动生成连续递增的唯一标识值 - 补充:同一个数据库会话同一时间仅允许一张表开启
IDENTITY_INSERT,用完即关也不会影响你后续对其他表执行手动插入标识列的操作
放置位置
直接放在你手动插入标识值的语句执行完成后即可,完整执行逻辑如下:
-- 开启product表手动插入标识列权限 SET identity_insert product ON -- 执行手动插入操作 INSERT INTO product (PID, ProdName, Qty, Unitprice) VALUES (10, 'soap', 5400, 22) -- 插入完成后立即关闭权限,恢复默认行为 SET identity_insert product OFF
如果你的操作包裹了事务,将该语句放在插入操作之后、事务提交之前的位置即可。
内容的提问来源于stack exchange,提问作者usmansharif shaik
相关产品推荐
相关产品推荐

