在SQL中使用Insert Into Syntax时出现问题

时间:2014-11-10 01:33:27

标签: sql sql-server

在此网站(http://www.w3schools.com/sql/sql_insert.asp)上,它表示我可以使用语法来使用SQL Insert语句:

INSERT INTO table_name
VALUES (value1,value2,value3,...); 

我尝试按照以下方式执行此操作:

create table Trade
(
TradeId INT PRIMARY KEY, -- define a coolumn of type int, primary key can't be null
Symbol varchar(20) NOT NULL, --define a column of type varchar. Not Null indicates that this column must always have a value
TradeAmount decimal(15, 3), -- total digits are 15, 3 or which are decimal points
Filled BIT NOT NULL default(0), -- we specify a default of 0 on the column
)
Go


Insert into Trade  VALUES('GOOG',10.235785,1)

但是,我得到错误“列名或提供的值的数量与表定义不匹配”,我不确定为什么会这样。

由于

2 个答案:

答案 0 :(得分:4)

您没有将第一个字段定义为自动增量,因此如果您不发送它,则表格预计有4个字段,而您只发送3个字段。

这应该有效:

Insert into Trade  VALUES(1,'GOOG',10.235785,1)

或者你可以用这种方式创建表,添加IDENTITY(1,1)(对于sql-server): http://www.w3schools.com/sql/sql_autoincrement.asp

create table Trade
(
TradeId INT IDENTITY(1,1) PRIMARY KEY, -- define a coolumn of type int, primary key can't be null
Symbol varchar(20) NOT NULL, --define a column of type varchar. Not Null indicates that this column must always have a value
TradeAmount decimal(15, 3), -- total digits are 15, 3 or which are decimal points
Filled BIT NOT NULL default(0), -- we specify a default of 0 on the column
)
Go

答案 1 :(得分:1)

此外,您可以在VALUES序列之前直接描述列:

INSERT INTO Trade (Symbol, TradeAmount, Filled) VALUES (
    ('GOOG', 10, 1),
    ('MSFT', 7 , 0)
)

在这种情况下,您不需要自己管理IDENTITY值,SQL Server会自动为每个新行增加它。