CREATE TABLE masterTbl (
id INT IDENTITY(1,1) CONSTRAINT pk_id PRIMARY KEY,
name VARCHAR(100))
INSERT INTO masterTbl VALUES ('ABC', 'XYZ','PQR')
现在
Select * FROM masterTbl
结果:
id | name
---------------------
1 | ABC
2 | XYZ
3 | PQR
DELETE FROM masterTbl WHERE id=1
现在
Select * FROM masterTbl
结果:
id | name
---------------------
2 | XYZ
3 | PQR
现在我要跑:
INSERT INTO masterTbl (id, name) VALUES (1, 'MNO')
这怎么可能?
答案 0 :(得分:54)
以最简单的形式,您需要暂时允许插入身份值
SET IDENTITY_INSERT masterTbl ON
INSERT INTO masterTbl (id, name) VALUES (1, 'MNO')
SET IDENTITY_INSERT masterTbl OFF
答案 1 :(得分:12)
是的,您可以手动设置身份字段
SET IDENTITY_INSERT masterTbl ON
然后插入您的数据
INSERT INTO masterTbl (id, name) VALUES (1, 'MNO')
......
并记得打电话
SET IDENTITY_INSERT masterTbl OFF
重新启用正确的功能
答案 2 :(得分:4)
SET IDENTITY_INSERT masterTbl ON
http://msdn.microsoft.com/en-us/library/aa259221(v=sql.80).aspx
答案 3 :(得分:0)
可以执行以下步骤:
I。启用身份插入,这将禁止SQL Server自动在表的身份列中插入值:
SET IDENTITY_INSERT ON
II。执行“手动”插入操作,并指定所有受影响的列名称:
INSERT INTO masterTbl (id, name)
VALUES (1, 'ABC',
2, 'XYZ',
4, 'PQR')
III。完成后,通过禁用早期版本的手动插入功能来重新启用自动标识值插入:
SET IDENTITY_INSERT OFF
IV。大功告成!