Ich portiere Code von einer Version von Sybase nach PostgreSQL. Dies ist eine C-Anwendung, die die Sybase-Clientbibliothek verwendet. Mein Ansatz ist es, eine Übersetzungsschicht zu schreiben, die Aufrufe dbsqlexec()
an PQexec()
(zum Beispiel) übersetzt. Dieser Teil funktioniert meistens.
Es scheint, dass die Sybase-Datenbank in Groß- und Kleinschreibung eingerichtet ist (in Bezug auf Datenbankobjektnamen). Zum Beispiel gibt es sowohl eine WIDGET
Tabelle als auch eine widget
Tabelle. Es sieht so aus, als ob die Konvention in dieser Anwendung lautet, dass die Namen in Großbuchstaben die tatsächlichen Datentabellen angeben, während die Namen in Kleinbuchstaben als temporäre Tabellen verwendet werden, wenn eine Verarbeitung ausgeführt wird.
Nach 4.1 Lexical Structure „ Schlüsselwörter und Bezeichner ohne Anführungszeichen sind Groß- und Kleinschreibung. “ Ich weiß , dass ich zu deaktivieren automatischer Faltung Klein doppelten Anführungszeichen Bezeichner kann, aber ich will nicht haben , dass manuell durch die Myriaden von Linien von Code, der diese Datenbank verwendet.
Gibt es eine Möglichkeit, PostgreSQL so einzurichten, dass diese automatische Fallfaltung für Datenbankobjektkennungen deaktiviert wird?
Meine Alternative besteht darin, Code zu schreiben, der jede SQL-Anweisung untersucht und jeden Bezeichner in doppelte Anführungszeichen setzt (das ist kein Schlüsselwort).
select * from TaBlEnAmE
verweist auf die gleiche Tabelle wie select * from tablename
oderselect * from TABLENAME
create table "tableName" (id integer primary key);
und dann create table "tablename" (id integer primary key);
diese Abfrage select * from TaBlEnAmE;
aus "Tabellenname" und nicht aus "Tabellenname" auswählen. "Nicht zitierte Namen werden immer in Kleinbuchstaben gefaltet" .