推荐优先用默认值(DEFAULT),触发器(TRIGGER)作补充:DEFAULT适用于静态或简单动态值,性能好;TRIGGER用于跨字段、跨表等复杂逻辑,需注意幂等性与性能。

SQL字段自动填充,推荐优先用默认值(DEFAULT),触发器(TRIGGER)作为补充手段——默认值简单高效、性能好;触发器适合依赖其他字段或表的复杂逻辑。
建表或修改字段时直接指定 DEFAULT,数据库在 INSERT 未提供该字段值时自动填入。
CREATE TABLE user (id INT PRIMARY KEY, status VARCHAR(10) DEFAULT 'active');
NOW() 或 CURRENT_TIMESTAMP;MySQL 5.6.5+ 支持带毫秒的 CURRENT_TIMESTAMP 作为 DATETIME 默认值当字段值需根据其他字段计算、查表获取、或满足条件才生成时,用触发器更合适。例如:生成订单编号、同步更新修改时间、根据用户等级自动设权限字段。
SET NEW.created_at = NOW();
updated_at:SET NEW.updated_at = NOW();
一个用户表常需三个自动字段:created_at(首次插入时填)、updated_at(每次更新都刷新)、status(新记录默认 active)。
created_at:用 DEFAULT CURRENT_TIMESTAMP(建表时定死,不可被 INSERT 覆盖)updated_at:用 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(MySQL)或通过 BEFORE UPDATE 触发器实现(兼容 PostgreSQL/SQL Server)status:用 DEFAULT 'active' 即可,无需触发器自动填充不是万能的,设计不当反而引发歧义或维护困难。
基本上就这些。合理分工:默认值管“不变的约定”,触发器管“变的逻辑”。不复杂但容易忽略细节。
以上就是SQL字段自动填充方案_SQL触发器与默认值结合的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号