You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:45:03