在我的应用程序中,尽管在客户端和服务器端都进行了严格的验证,但不知何故,从用户注册页面开始记录是空白的。所有数据均为空白,接受我表中的默认值(例如,性别 - 男性)。这种情况大约发生在100次登记中。
Mysql - 我的每个必填字段的结构都不是null。它仍然插入空白。
Cakephp方面 - 我保存之前检查数据数组是否为空。
如果有人帮助我,我将非常感激。
提前致谢。
答案 0 :(得分:2)
它是空白的,因为在每个数据库(Oracle除外)中,空字符串''
不为空。因此数据库将接受这一点。
如果你想防止这种情况发生,你需要写一个这样的触发器:
DELIMITER $$
CREATE TRIGGER bi_table1_each BEFORE INSERT ON table1 FOR EACH ROW
BEGIN
//this will cause an error and prevent the insertion of an empty gender field.
//If gender has a default value, the database will insert the default value instead.
IF new.gender = '' THEN SET new.gender = null;
END $$
DELIMITER ;
或者,您可以将性别设为枚举字段
ALTER table1
CHANGE COLUMN gender gender ENUM ('M','F');
<强>链接:强>
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
http://dev.mysql.com/doc/refman/5.5/en/triggers.html