列名或提供的值的数量与表定义不匹配。为啥?
Posted
技术标签:
【中文标题】列名或提供的值的数量与表定义不匹配。为啥?【英文标题】:Column name or number of supplied values does not match table definition. Why?列名或提供的值的数量与表定义不匹配。为什么? 【发布时间】:2014-09-22 04:44:54 【问题描述】:我错过了什么?
create table Diver(
diver_number int primary key check(diver_number>0) not null,
first_name char(30) not null,
last_name char(30) not null,
fullname AS first_name+' '+last_name,
bithdate date not null,
email nchar(100) not null,
diver_password char(8) not null check(Len(diver_password) = 8
AND diver_password not like('%[^a-z0-9]%')),
diver_signature nchar(200) not null,
signature_date date not null,
old_diving_diaries nchar(200))
insert into Diver VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','')
我收到此错误: 列名或提供的值数与表定义不匹配。 为什么?
【问题讨论】:
因为您的表有 10 列而您的查询有 8 列? 【参考方案1】:values 和 data_types 的个数必须相同。
VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','ds2016','sdd1','odd1')
需要传递 10 个值。现在它必须运行。
【讨论】:
【参考方案2】:你想念 old_diving_diaries。 您需要将值更改为
VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','',
'') <-- this
由于计算列,您只需要 9 个数据。
【讨论】:
【参考方案3】:是的,错误本身就说明了一切。您正在尝试将 8 个值插入到具有 10 列的表中。
考虑列出要显式插入的列名
insert into Diver (column names here)
VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','')
【讨论】:
当然。没看到。以上是关于列名或提供的值的数量与表定义不匹配。为啥?的主要内容,如果未能解决你的问题,请参考以下文章