【问题标题】: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,同时拥有它们并不能改善任何事情

标签: mysql sql sql-insert


【解决方案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) 表中列的顺序发生变化,则插入语句可能会中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    相关资源
    最近更新 更多