我对此很新。我创建了这个表,我没有遇到任何问题:
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有关,而不是我在查询中没有值的自动增量标识。 我在这里做错了什么?一些帮助将不胜感激。
答案 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看起来一片空白。