本文对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;