为啥默认约束在mysql中不起作用? [复制]

Posted

技术标签:

【中文标题】为啥默认约束在mysql中不起作用? [复制]【英文标题】:Why does the default constraint not work in mysql? [duplicate]为什么默认约束在mysql中不起作用? [复制] 【发布时间】:2021-02-13 17:29:58 【问题描述】:

错误代码:1136。列计数与第 1 行的值计数不匹配

roll_no INT PRIMARY KEY NOT NULL unique,
name CHAR(15) NOT NULL,
class integer(3),
section CHAR(1),
sibling boolean default false);

insert into school
values(1,'ramesh',12,'D');

【问题讨论】:

通常在这些情况下,您会将主键指定为自增列。您仍然必须明确设置其他列名。 PRIMARY KEY NOT NULL unique PRIMARY KEY 或 UNIQUE,同时拥有它们并不能改善任何事情 【参考方案1】:

如果您没有为所有列提供值,则需要明确说明这些值所指的列:

insert into school(roll_no, name, class, section)
values(1, 'ramesh', 12, 'D');

【讨论】:

如果我必须输入行怎么办:(1,'ramesh',12,'D'),(2,'Sam',11,'C',True)【参考方案2】:

您没有在插入中指定列名,因此 mysql 需要 all 列的数据。限定您的目标列名称,插入应该可以工作:

INSERT INTO school (roll_no, name, class, section)
VALUES
    (1, 'ramesh', 12, 'D');

SQL 插入的最佳实践是始终列出插入的目标列。造成这种情况的一个原因是,如果您不这样做,如果 a) 列数发生变化,或 b) 表中列的顺序发生变化,则插入语句可能会中断。

【讨论】:

以上是关于为啥默认约束在mysql中不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥复制功能在 setTimeout 中不起作用?

为啥 HttpServletRequest.getRemoteAddr() 在 Java servlet 中不起作用? [复制]

为啥百分号 (%) 在 crontab 中不起作用? [复制]

为啥 iframe 高度 100% 在 XHTML 页面中不起作用? [复制]

为啥 `\d` 在 sed 的正则表达式中不起作用? [复制]

为啥垂直对齐:中间;在这段代码中不起作用? [复制]