本文对PolarDB系统保留列名做了如下说明。

背景说明

在PolarDB O引擎中不支持使用保留的系统列名:ctid、oid、cmin、cmax、xmin、xmax,使用系统列名会有如下报错:
ERROR:  column name "ctid" conflicts with a system column name

解决方案

  • 您可以通过更改列名的方式处理冲突列名。
  • 创建与原表不同名的影子表,修改冲突列名。
  • 创建与原表同名的视图,将列名映射为原表列名。

示例

  • 更改列名
    原列名为:
    create table foo(oid varchar(10))
    修改为:
    create table foo(p_oid varchar(10))
  • 创建新表
    原表为:
    create table foo(oid varchar(10), ctid int, xmin int)
    创建新表:
    create table __foo(p_oid varchar(10), p_ctid int, p_xmin int);
    创建视图:
    create view foo as select p_oid as oid, p_ctid as ctid, p_xmin as xmin from __foo;