技术分享解决MySQL无法写入空值问题mysql不能写进空值

这就是坑,别信,别这么干。
直接使用ALTER TABLE修改字段为NULL,然后INSERT时用NULL关键字或IFNULL函数。
如:ALTER TABLE table_name MODIFY field_name VARCHAR(1 0) NULL; INSERT INTO table_name (field1 , field2 , field3 ) VALUES ('value1 ', 'value2 ', NULL); 或 INSERT INTO table_name (field1 , field2 , field3 ) VALUES ('value1 ', 'value2 ', IFNULL(@null_value, ''));

MySQL数据表字段为空问题解决方法非空约束限制NULL值mysql不能为null

对,就是这个问题。
之前遇到过。

说白了,非空约束就是不让字段留空。

创建表时,字段后加NOTNULL就是了。

比如:CREATE TABLE employee (id INT NOT NULL, ...)。

现有表改字段,用ALTER TABLE。

ALTER TABLE employee MODIFY COLUMN name VARCHAR(1 00) NOT NULL;
别忘了解决默认值问题,默认值用DEFAULT。

数据表改字段约束,先查官方文档。

你自己看,具体操作步骤。

mysql 主键可以为 null

记得有一次,我帮朋友重构一个老旧的电商系统数据库。
那个系统里的用户表,主键居然是自增的整型ID,但是有个字段“推荐人ID”也是主键,而且允许NULL值。
当时我就在想,这要是有人同时推荐了两个人,数据库不就乱套了?
结果呢,不出所料,系统里还真出现了几个推荐人ID为NULL的用户记录。
我花了好几个小时去手动修复这些数据,一个个去查对应的用户,然后手动补上推荐人ID。
那时候我就在想,如果当初设计数据库的时候,把推荐人ID设置为NOT NULL,再和用户ID一起组成复合主键,不就省了这么多麻烦?
后来我又想,如果数据库设计得更好,比如用UUID作为主键,那不就从根本上解决了这个问题?UUID全局唯一,而且不容易出现冲突,岂不是更完美?
但话说回来,现实中的数据库设计往往比这些理论复杂得多。
每个业务场景都有它的特殊性,不能一概而论。
比如,如果系统规模不大,用自增ID也行;如果系统需要分布式部署,可能就得考虑用UUID。

那你说呢,除了自增ID和UUID,还有没有更好的主键设计方案呢?