更新时间:2025-06-04 GMT+08:00

U0400003:GaussDB列定义不支持ON UPDATE选项

描述

数据库类型与版本

  • 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。
  • 目标库类型与版本:GaussDB V2.0-3.2及之前的版本。

语法示例

默认情况下,UGO保留ON UPDATE子句不转换,并生成此错误提示。

GaussDB V2.0-3.2及之前的版本不支持表列定义中指定ON UPDATE子句,如下示例将不支持。

CREATE TABLE demo (
    id INT,
    name VARCHAR(255) DEFAULT null,
    create_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE,
    update_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE ON UPDATE CURRENT_TIMESTAMP
);

改造建议

1、修改“表列定义on update选项”转换配置项,可以选择通过触发器的形式实现ON UPDATE的功能。请注意,触发器可能会影响使用性能,并提升数据库系统的维护难度,需要您充分评估业务影响。

2、也可以参考以下示例,手动修改注释掉ON UPDATE子句。

CREATE TABLE demo (
    id INT,
    name VARCHAR(255) DEFAULT null,
    create_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE,
    update_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE /*ON UPDATE CURRENT_TIMESTAMP*/
);

此时需要在每次更新demo表时都显式更新update_time字段的值,保证数据的准确性。