[ PROMPT_NODE_23550 ]
schema-lowercase-identifiers
[ SKILL_DOCUMENTATION ]
## 使用小写标识符以确保兼容性
PostgreSQL 会将未加引号的标识符转换为小写。加引号的混合大小写标识符需要始终加引号,并会导致工具、ORM 和 AI 助手无法识别的问题。
**错误示范(混合大小写标识符):**
sql
-- 加引号的标识符保留了大小写,但到处都需要引号
CREATE TABLE "Users" (
"userId" bigint PRIMARY KEY,
"firstName" text,
"lastName" text
);
-- 必须始终加引号,否则查询失败
SELECT "firstName" FROM "Users" WHERE "userId" = 1;
-- 这会失败 - 不加引号时 Users 会变成 users
SELECT firstName FROM Users;
-- 错误:关系 "users" 不存在
**正确示范(小写 snake_case):**
sql
-- 未加引号的小写标识符具有可移植性且对工具友好
CREATE TABLE users (
user_id bigint PRIMARY KEY,
first_name text,
last_name text
);
-- 无需引号即可工作,被所有工具识别
SELECT first_name FROM users WHERE user_id = 1;
混合大小写标识符的常见来源:
sql
-- ORM 通常生成带引号的 camelCase - 请配置它们使用 snake_case
-- 从其他数据库迁移的数据可能会保留原始大小写
-- 一些 GUI 工具默认会给标识符加引号 - 请禁用此功能
-- 如果必须处理混合大小写,可以创建视图作为兼容层
CREATE VIEW users AS SELECT "userId" AS user_id, "firstName" AS first_name FROM "Users";
参考:[标识符和关键字 (Identifiers and Key Words)](https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS)