在MySQL表中,为列分配默认值很重要,为什么?

时间:2014-06-23 12:40:07

标签: php mysql validation default

当我更新MySQL表中的行时,我收到一条警告:“字段xyz没有默认值”。这是真的;它没有。我在PHP代码中验证从MySQL获得的所有数据。

MySQL警告我的事实让我想知道:将默认值分配给所有列是否很重要,如果是,为什么?性能?可预测的行为?简化调用代码?其他我不了解的最佳实践或问题?

1 个答案:

答案 0 :(得分:1)

显然,您宣布自己的列为NOT NULL。这是允许和合理的。但是,当您在表中插入新行时,MySQL需要知道该值是什么。您可以通过以下三种方式输入值:

  • insert语句中,您可以明确列出值。
  • create table语句中,您可以拥有默认值。如果没有列出,则NULL是默认值。
  • 该表可以有一个insert触发器,用于指定列的值。

由于MySQL将使用NULL作为默认值,因此只有在列中不允许NULL时才会收到错误。

编辑:

原始答案不是100%完成,因为MySQL在正常模式下使用时会组成值。这些在文档中描述为here。所以,正确的第四个项目是:

  • MySQL将为数字插入0的默认值,为大多数情况下的字符串插入'',但并非所有情况

由于情况相当广泛,您可能实际上是在严格模式下操作或关闭此默认行为。