PostgreSQL无效列名问题:除analyse外还有哪些需规避列名?
PostgreSQL中需避免使用的列名
问题原因
你遇到的错误是因为analyse是PostgreSQL的保留关键字,直接用作列名会触发语法错误。
需要避免的列名类型
核心保留关键字:这类词是SQL标准或PostgreSQL原生的关键字,绝对不能直接作为列名、表名等标识符使用,常见的包括:
- SQL标准关键字:
SELECT、FROM、WHERE、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER、TABLE、INDEX、VIEW、DEFAULT、NULL、TRUE、FALSE - PostgreSQL特有关键字:
ANALYSE(同ANALYZE,大小写不敏感)、VACUUM、PLPGSQL、SERIAL、BIGSERIAL
- SQL标准关键字:
非保留但有特殊含义的关键字:这类词虽非严格保留,但在特定SQL语境下有特殊作用,用作列名易引发语法歧义,不推荐使用,比如:
USER、ROLE、GROUP、ORDER、JOIN、LEFT、RIGHT、LIMIT、OFFSET、CASE、WHEN、THEN
特殊处理方式
如果确实需要使用上述关键字作为列名,必须用双引号(")包裹,例如:
CREATE TABLE test_table_x1 ( info TEXT, folder TEXT, "analyse" TEXT, status TEXT );
但这种方式会让标识符变得大小写敏感(PostgreSQL默认标识符大小写不敏感),且降低代码可读性,不建议采用。
内容的提问来源于stack exchange,提问作者Chazg76
相关产品推荐
相关产品推荐

