当我更新MySQL表中的行时,我收到一条警告:“字段xyz没有默认值”。这是真的;它没有。我在PHP代码中验证从MySQL获得的所有数据。
MySQL警告我的事实让我想知道:将默认值分配给所有列是否很重要,如果是,为什么?性能?可预测的行为?简化调用代码?其他我不了解的最佳实践或问题?
答案 0 :(得分:1)
显然,您宣布自己的列为NOT NULL
。这是允许和合理的。但是,当您在表中插入新行时,MySQL需要知道该值是什么。您可以通过以下三种方式输入值:
insert
语句中,您可以明确列出值。create table
语句中,您可以拥有默认值。如果没有列出,则NULL
是默认值。insert
触发器,用于指定列的值。由于MySQL将使用NULL
作为默认值,因此只有在列中不允许NULL
时才会收到错误。
编辑:
原始答案不是100%完成,因为MySQL在正常模式下使用时会组成值。这些在文档中描述为here。所以,正确的第四个项目是:
0
的默认值,为大多数情况下的字符串插入''
,但并非所有情况由于情况相当广泛,您可能实际上是在严格模式下操作或关闭此默认行为。