34
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')

这怎么可能?

4

4 回答 4

65

以最简单的形式,您需要暂时允许插入标识值

SET IDENTITY_INSERT masterTbl ON
INSERT INTO masterTbl (id, name) VALUES (1, 'MNO')
SET IDENTITY_INSERT masterTbl OFF
于 2012-09-24T10:54:26.680 回答
12

是的,您可以手动设置身份字段

SET IDENTITY_INSERT masterTbl ON

然后插入你的数据

INSERT INTO masterTbl (id, name) VALUES (1, 'MNO') 
......

记得打电话

SET IDENTITY_INSERT masterTbl OFF

重新启用正确的功能

于 2012-09-24T10:54:36.773 回答
4
SET IDENTITY_INSERT masterTbl ON

https://docs.microsoft.com/en-us/sql/t-sql/statements/set-identity-insert-transact-sql?view=sql-server-2017

于 2012-09-24T10:53:49.783 回答
0

可以执行以下步骤:

I. 启用标识插入,这将禁止 SQL Server 在表的标识列中自动插入值:

SET IDENTITY_INSERT ON

二、执行“手动”插入操作,指定所有受影响的列名:

INSERT INTO masterTbl (id, name)
VALUES (1, 'ABC',
        2, 'XYZ',
        4, 'PQR')
  • 如果您跳过列出列名,SQL Server 将弹出一条错误消息。

三、完成后,通过禁用之前的手动插入功能重新启用自动标识值插入:

SET IDENTITY_INSERT OFF

四。你完成了!

于 2020-08-14T14:00:14.637 回答