我正在将一些代码从某些版本的 Sybase 移植到 PostgreSQL。这是一个使用 Sybase 客户端库的 C 应用程序。我的方法是编写一个翻译层,将调用转换dbsqlexec()
为PQexec()
(例如)。那部分主要是工作。
看来 Sybase 数据库是以区分大小写的方式设置的(关于数据库对象名称)。例如,既有WIDGET
桌子又有widget
桌子。看起来这个应用程序中的约定是全大写名称表示实际数据表,而小写名称在运行某些处理时用作临时表。
根据4.1 Lexical Structure,“关键字和未加引号的标识符不区分大小写。 ”我知道我可以双引号标识符来禁用自动折叠为小写,但我不想通过无数行手动执行此操作使用此数据库的代码。
有没有办法设置 PostgreSQL 来禁用数据库对象标识符的这种自动大小写折叠?
我的替代方法是编写一些代码来检查每个 SQL 语句并在每个标识符(不是关键字)周围加上双引号。