上一篇
场景引入:
凌晨3点,你正喝着第5杯咖啡☕,突然发现新上线的用户注册系统疯狂报错——因为总有人漏填“会员等级”字段,而你的程序没做判空处理!😱 这时候,一个简单的DEFAULT
设置就能让数据库自动填上“普通会员”,避免程序崩溃。
NULL
导致后续查询出错 inactive
状态 CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50) NOT NULL, -- 字符串默认值 member_level VARCHAR(10) DEFAULT '普通会员', -- 数字默认值 login_count INT DEFAULT 0, -- 时间戳默认当前时间(5.6+版本) create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-- 修改字段默认值 ALTER TABLE users ALTER COLUMN member_level SET DEFAULT '白银会员'; -- 移除默认值 ALTER TABLE users ALTER COLUMN member_level DROP DEFAULT;
-- 使用DEFAULT关键字触发默认值 INSERT INTO users (id, username, member_level) VALUES (1, '张三', DEFAULT); -- 或者直接省略字段 INSERT INTO users (id, username) VALUES (2, '李四');
NULL
,默认值不会生效 DEFAULT RAND()
会报错❌) VARCHAR
替代) -- 通过触发器实现复杂逻辑 DELIMITER // CREATE TRIGGER set_vip_before_insert BEFORE INSERT ON users FOR EACH ROW BEGIN IF NEW.register_ip LIKE '192.168.%' THEN SET NEW.member_level = '内部测试'; END IF; END// DELIMITER ;
-- 给带默认值的字段加索引加速查询 ALTER TABLE users ADD INDEX idx_member_level (member_level);
last_login_time
),用DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
自动刷新 EXPLAIN
检查包含默认值字段的查询计划 :合理使用默认值就像给数据库装上智能保险丝⚡,既能减少代码量,又能提升数据可靠性,下次设计表结构时,不妨多问一句:“这个字段是否需要DEFAULT?”
(注:本文基于MySQL 8.0特性整理,部分语法在旧版本可能不适用)
本文由 御雁梅 于2025-08-02发表在【云服务器提供商】,文中图片由(御雁梅)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/510611.html
发表评论