我创建了一个具有默认列值的表 male
CREATE TABLE Persons
(name varchar(20),
age int,
sex varchar(5) default 'male')
Run Code Online (Sandbox Code Playgroud)
插入声明#1:
INSERT INTO Persons values('Bob', 20)
Run Code Online (Sandbox Code Playgroud)
插入声明#2:
INSERT INTO Persons(name,sex) values('Bob', 20)
Run Code Online (Sandbox Code Playgroud)
当我尝试Persons使用insert语句#1 将值插入表时,我得到如下所示的错误
列名或提供的值数与表定义不匹配
但是当我插入Persons使用语句#2时,它成功执行.
有人可以解释为什么会这样吗?
那么,在你的陈述#1中,如果你省略列的列表,你必须为所有三列提供值,而你不是这样做的.这就是为什么如果你只提供其中两个值就会失败的原因.
你的陈述#2应该是:
INSERT INTO Persons(name, age) values('Bob', 20)
Run Code Online (Sandbox Code Playgroud)
然后你清楚地指定要插入哪些列(name和age),并提供填充两列所需的两个值 - 这就是它工作的原因.第三列将填充配置的默认值,因为您没有为其指定任何内容.
出于这些原因,我建议始终明确指定要插入数据的列的列表 - 不要只是省略该列表并假设您正在使所有列正确.....
| 归档时间: |
|
| 查看次数: |
15563 次 |
| 最近记录: |