SQL查询 - 列名称上的错误,但不是这样

时间:2013-10-09 16:08:46

标签: sql

我对此很新。我创建了这个表,我没有遇到任何问题:

CREATE TABLE [dbo].[Urban_Rail] (
[Id]      INT           IDENTITY (1, 1) NOT NULL,
[Country] VARCHAR (50)  NOT NULL,
[City]    VARCHAR (50)  NOT NULL,
[Type]    VARCHAR (50) NOT NULL,
[Gauge]   NCHAR (10)    NULL,
[Year]    NCHAR (10)    NULL,
[Status]  VARCHAR (50)  NULL,
[Notes]   VARCHAR (500) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

现在我尝试使用以下语句填写几千行数据:

INSERT INTO Urban_Rail ('Id','Country','City','Type','Gauge','Year','Status','Notes') VALUES ('','Algeria','Algiers','Metro','1435','2011','Open','');
INSERT INTO Urban_Rail ('Id','Country','City','Type','Gauge','Year','Status','Notes') VALUES ('','Algeria','Algiers','Tram','1435','2011','Open','');
INSERT INTO Urban_Rail ('Id','Country','City','Type','Gauge','Year','Status','Notes') VALUES ('','Algeria','Batna','Tram','','','Planned','');

但是我收到错误,说每列的名称无效。这看起来并不适合我。我想知道它是否与Id有关,而不是我在查询中没有值的自动增量标识。 我在这里做错了什么?一些帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

从插入中删除ID(因为它是一个标识),或者如果您希望特定ID在运行插入之前打开Identity_Insert,然后再重新关闭。

SET IDENTITY_INSERT [dbo].[Urban_Rail] ON 

INSERT INTO Urban_Rail (Id,Country,City,Type,Gauge,Year,Status,Notes) VALUES (1,'Algeria','Algiers','Metro','1435','2011','Open','');

SET IDENTITY_INSERT [dbo].[Urban_Rail] OFF

答案 1 :(得分:0)

INSERT语句中不应包含IDENTITY列。它会自动填充下一个值。

答案 2 :(得分:0)

“ID”列是一个标识列,因为数据库会分配它,所以不允许插入它。将其从插入列中的列名和值列表中删除。

如果您需要插入标识列,可以使用

SET IDENTITY_INSERT <table> ON

但我猜你不需要,因为你的ID看起来一片空白。