首页 > 解决方案 > 插入到仅包含标识列的表中

问题描述

我有下表:

CREATE TABLE Seq2 (val INT NOT NULL IDENTITY);

知道我尝试过如何填充此表:

 INSERT INTO Seq2(val) VALUES (1)

我有以下错误:

当 IDENTITY_INSERT 设置为 OFF 时,无法在表“Seq2”中插入标识列的显式值。

标签: sqlsql-servertsql

解决方案


如果我必须说,拥有这样一张桌子似乎完全没有意义。如果表只有 anIDENTITY那么它实际上没有任何意义,所以它在那里没有意义。

话虽这么说,如果您确实有这样的表,则可以将INSERT值放入IDENTITYusing DEFAULT VALUES

INSERT INTO dbo.Seq2
DEFAULT VALUES;

INSERT INTO dbo.Seq2
DEFAULT VALUES;

使用新表,这将创建具有值1和的行2

如果您想明确地将INSERT值放入表中,那么您最好删除该IDENTITY选项。考虑到这是一个新表,只需DROP它并使用IDENTITY属性重新创建它:

DROP TABLE dbo.Seq2;
GO
CREATE TABLE Seq2 (val INT NOT NULL);

拥有一个只有一IDENTITY列的表,然后您要为其定义结果毫无意义的。要么不使用IDENTITY并定义值,要么使用IDENTITY并让 SQL Server 处理它。


推荐阅读