更新时间: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字段的值,保证数据的准确性。