openGauss建表列名限制问题及tid列冲突报错求助
解决openGauss建表列名
tid冲突问题 问题原因
tid是openGauss的系统隐含列,用于数据库内部标识元组(行),这类列名不属于公开的保留字列表,但属于系统内部预留使用的名称,无法被用户自定义为表的列名。- 你SQL语句中使用的是中文双引号“”,而非标准SQL要求的英文双引号"",这也是导致你尝试用双引号包裹仍无效的原因。
解决办法
- 优先方案:更换列名
直接将tid替换为无冲突的自定义名称,比如biz_tid、trans_id,示例SQL如下:CREATE TABLE if not exists ax_quarantine_rcpt ( biz_tid varchar2(255) NOT NULL, rcpt varchar2(255) NOT NULL, org_id varchar2(60) NOT NULL, PRIMARY KEY (biz_tid, rcpt) ); - 若需保留类似命名(不推荐)
确保使用英文双引号包裹列名,但需注意:部分系统隐含列即使使用英文双引号也无法绕过限制,仅针对部分非核心系统列有效,示例SQL如下:
但针对CREATE TABLE if not exists ax_quarantine_rcpt ( "tid" varchar2(255) NOT NULL, rcpt varchar2(255) NOT NULL, org_id varchar2(60) NOT NULL, PRIMARY KEY ("tid", rcpt) );tid这类核心系统隐含列,此方法大概率无效,仍建议更换列名。
内容的提问来源于stack exchange,提问作者tom
相关产品推荐
相关产品推荐

