Php 在MySQL表中,为列指定默认值很重要吗?为什么?
当我更新MySQL表中的行时,会收到一条警告:“字段xyz没有默认值”。这是真的;没有。我在PHP代码中验证从MySQL获得的所有数据Php 在MySQL表中,为列指定默认值很重要吗?为什么?,php,mysql,validation,default,Php,Mysql,Validation,Default,当我更新MySQL表中的行时,会收到一条警告:“字段xyz没有默认值”。这是真的;没有。我在PHP代码中验证从MySQL获得的所有数据 MySQL警告我的事实让我想知道:为所有列指定默认值是否重要?如果是,为什么?演出可预测的行为?呼叫代码的简化?其他我不知道的最佳实践或问题?显然,您正在将列声明为非NULL。这是允许的,也是合理的。但是,当您向表中插入新行时,MySQL需要知道值是什么。以下是三种输入值的方法: 在insert语句中,可以显式列出一个值 在createtable语句中,可以有
MySQL警告我的事实让我想知道:为所有列指定默认值是否重要?如果是,为什么?演出可预测的行为?呼叫代码的简化?其他我不知道的最佳实践或问题?显然,您正在将列声明为
非NULL
。这是允许的,也是合理的。但是,当您向表中插入新行时,MySQL需要知道值是什么。以下是三种输入值的方法:
- 在
语句中,可以显式列出一个值insert
- 在
语句中,可以有一个默认值<如果未列出,则默认为code>NULLcreatetable
- 该表可以有一个指定列值的
触发器insert
NULL
作为默认值,所以只有当列中不允许NULL
时,才会出现错误
编辑:
最初的答案不是100%完整,因为MySQL在正常模式下使用时会生成值。这些在文档中有描述。因此,正确的第四个要点是:
- MySQL将在大多数(但不是所有)情况下为数字插入默认值
,为字符串插入默认值0
'
由于情况相当广泛,很可能您实际上是在严格模式下操作,或者关闭了此默认行为。如果列没有默认值,并且您没有给它一个值,那么它的值应该是什么?如果没有合理的默认值,则不应该;e、 g.默认的出生日期应该是什么?@duffymo
NULL
。否则,您必须在每次插入时显式声明此列值,否?@Ohgodwhy同意;null是唯一有意义的东西。如果你什么也不说,MySQL就会这样假设。你可能会感到惊讶,DATE
的默认值是0
,除非列允许NULL
。不同的数据类型对非NULL
列有不同的值NULL
只是允许NULL
的列的默认隐式值。