在此网站(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)
但是,我得到错误“列名或提供的值的数量与表定义不匹配”,我不确定为什么会这样。
由于
答案 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会自动为每个新行增加它。