mySql插入需要注明所有列

时间:2014-05-08 18:03:01

标签: mysql

我最近开始托管我自己的网站和mySQL数据库。一切正常,但每当我对任何表进行插入或更新时,如果我不调用每一列,则会出错。是否有表格或DB控制此设置?我以前从未使用过我之前的数据库主机。

感谢。

2 个答案:

答案 0 :(得分:1)

如果更新特定行中某些列但不是所有列的值,则可能不会失败。

创建表时,需要为INSERT语句中可能选择省略的每列设置默认值。

答案 1 :(得分:1)

有几种方法可以编写INSERT查询。

  1. INSERT INTO tablename (col1, col2, ...) VALUES (val1, val2, ...)

  2. INSERT INTO tablename (col1, col2, ...) SELECT ...

  3. INSERT INTO tablename VALUES (val1, val2, ...)

  4. INSERT INTO tablename SELECT ...

  5. 在前两种方法中,您不必列出所有列,因为您指定要显式填充的列。不在(col1, col2, ...)列表中的列将获得其默认值。 VALUES列表或SELECT查询必须返回列表中指定的列数。

    在方法3和4中,MySQL要求VALUES列表或SELECT查询返回与表包含的列数相同的列,并且它们必须与表定义的顺序相同。我在这些方法中找不到任何禁用列计数检查的设置。

    在方法1和3中,您可以使用关键字DEFAULT代替任何列值来插入其默认值。

    如果您的服务器处于STRICT模式,则还必须显式设置架构中没有DEFAULT选项的任何列。如果它不是严格模式,将使用自动默认值。