当我的“业务”表或列名恰好是保留字时,我担心在PostgreSQL中使用带引号的标识符。是否有任何标准或最佳实践的修复方法?我希望有一个一致的修改机制,因为还有一些代码生成,需要能够自动在PostgreSQL中使用的错位名称和代码中使用的非错位名称之间来回转换。
答案 0 :(得分:2)
最简单,也许最好的方法是“修改”术语,以保证所有名称都不是保留字,就是在它们前面添加下划线字符。
最好的方法是不使用保留字 - 让DBA为业务术语和数据库术语之间的任何冲突选择名称。
还要考虑可能与您的应用语言中的保留字冲突的术语。
答案 1 :(得分:0)
我喜欢为服务器端函数中的参数和变量保留下划线前缀(_name
)以排除冲突。我最近在使用函数的人中看到了很多。
对于数据库对象的标识符,我手动选择名称。使用非英语术语(缩减为ASCII字母)可以避免大多数冲突。
另一种选择是使用复数表格来表名,因为大多数保留字都是单数形式(少数例外!)。
大多数1个字母的前缀都可以毫无例外地完成工作。喜欢:n_name
。但是,由于我手工挑选标识符,因此无需自动化。
任何都很好,可以避免容易出错的双引号需求。即使Postgres允许,我也从不使用reserved words。