更新时间:2025-10-22 GMT+08:00
分享

U0100047: 请根据源语句实际场景填写对应数据类型

描述

GaussDB 分布式不支持生成列。

数据库类型与版本

  • 源库类型与版本:UGO 支持的 Oracle 版本。
  • 目标库类型与版本:UGO 支持的 GaussDB 分布式版本。

语法示例

Oracle脚本:

CREATE TABLE test_con (
    createtime TIMESTAMP(3),
    createdate as (TO_CHAR(createtime, 'YYYYMMDD'))
);

改造建议

1、表生成列改成普通表,数据类型为text;

2、生成列的值通过触发器等效实现。

GaussDB改写后的脚本:

CREATE TABLE test_con (
    createtime TIMESTAMP(3),
    createdate text
);
CREATE OR REPLACE FUNCTION dsc_fn_generated_test_con()
RETURN trigger
AS
BEGIN
NEW.createdate =  (NEW.createtime, 'YYYYMMDD');
RETURN NEW;
END;
/
CREATE TRIGGER dsc_tr_generated_test_con
BEFORE INSERT OR UPDATE
ON test_con
FOR EACH ROW
EXECUTE PROCEDURE dsc_fn_generated_test_con();
/

相关文档