PostgreSQL建表及触发器函数代码转换为MySQL语法求助
PostgreSQL转MySQL兼容SQL代码
注:MySQL的触发器支持直接写入执行逻辑,不需要像PostgreSQL一样先单独声明触发函数,因此我们直接写建表+触发器语句即可,逻辑和原PostgreSQL代码完全一致。
一、建表语句
和原表字段完全对齐,适配MySQL字段类型:
CREATE TABLE good_info ( id VARCHAR(64) NOT NULL COMMENT '商品唯一ID', name VARCHAR(255) NULL COMMENT '商品名称', price BIGINT NOT NULL COMMENT '商品价格', create_time TIMESTAMP NOT NULL COMMENT '记录创建时间(UTC时区)', update_time TIMESTAMP NOT NULL COMMENT '记录更新时间(UTC时区)', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
二、触发器创建语句
1. 插入数据前自动设置创建和更新时间触发器
DELIMITER // CREATE TRIGGER set_create_time_update_time BEFORE INSERT ON good_info FOR EACH ROW BEGIN SET NEW.create_time = UTC_TIMESTAMP(); SET NEW.update_time = UTC_TIMESTAMP(); END // DELIMITER ;
2. 更新数据前自动更新时间触发器
DELIMITER // CREATE TRIGGER set_update_time BEFORE UPDATE ON good_info FOR EACH ROW BEGIN SET NEW.update_time = UTC_TIMESTAMP(); END // DELIMITER ;
使用注意事项
- 如果你使用的是Navicat、DBeaver等图形化SQL工具执行触发器语句,无需手动修改分隔符,可以直接省略
DELIMITER //和最后的DELIMITER ;语句 - VARCHAR字段的长度可以根据你的实际业务需求调整,上述代码中给出的是通用适配值
- 时间取值使用
UTC_TIMESTAMP(),和原PostgreSQL代码的NOW() at time zone 'utc'逻辑完全一致
内容的提问来源于stack exchange,提问作者Tilei Liu
相关产品推荐
相关产品推荐

