我希望我的orderedDate列(使用日期类型)不允许null或0000-00-00
我将orderedDate列设置为非null,但是在使用insert into
时INSERT INTO Purchase(custName, price)
VALUES('Max Wong', 10.00)
订购日期是0000-00-00。我假设这是因为它没有给出其他值时是默认值。
我也试过
ALTER TABLE Purchase
ADD CHECK (orderedDate > '0000-00-00');
(还有orderedDate> 0000-00-00和orderedDate> 0)
我读了尝试
SET mysql_mode = 'NO_ZERO_DATE'
但它不起作用。
我在网上看到了很多php建议,但我必须使用sql。
答案 0 :(得分:2)
MySQL不支持CHECK约束。它解析它们,所以它不会抛出错误,但它不会保存或强制执行它们。
如果您启用NO_ZERO_DATE SQL模式,如果您使用0000-00-00,MySQL会发出警告,而不是错误。
如果启用NO_ZERO_DATE模式和严格模式,则会出错。
此模式是从MySQL 5.7开始的默认模式。
有关详细信息:https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html