PostgreSQL: Vorsicht mit Gross- und Kleinschreibung

Mischa Sameli, Geschäftsführer & Leiter Entwicklung

Es sind immer die kleinen Dinge, die einen zum Verzweifeln bringen beim Programmieren. So auch in diesem Fall mit der Postgres-Datenbank. Und zwar geht es um Gross- und Kleinschreibung. Hier tickt Postgres einfach ein wenig anders als die anderen. Also aufgepasst.

Folgendes Beispiel: Wir haben eine Tabelle mit dem Namen Contact und den Spalten strName und ContactID. Ein Update-Statement würde dann beispielsweise so aussehen.

1UPDATE Contact
2SET Name = 'Muster'
3WHERE Contact_ID = 5

Die Resultate: MSSQL: ok
MySQL: ok
Oracle: bääähhhh
Postgres: bäähhh
Der Grund dafür: Tabellennamen und Spaltennamen sind bei PostgreSQL und Oracle verstehen keine Unterschiede in Gross- und Kleinschreibung, bei MySQL ist dies eine Einstellungssache und bei MSSQL ist's egal. MSSQL und je nach Einstellung auch MySQL würden also auch bei folgender Variante nicht streiken:

1UPDATE contact
2SET strname = 'Muster'
3WHERE contactid = 5

PostgreSQL versteht eigentlich nur Kleingeschriebenes, Oracle hat sich gemäss dem SQL-Standard für versal entschieden. Heiliges Durcheinander. Aber weiter kommt mit dieser Erkenntnis auch nicht. Erfolgreich wird man Postgres nur auf zwei Arten:

  1. Im Datenbank-Design wird alles klein geschrieben.
  2. In den Abfragen werden die Spezialfälle angeführt

Variante 1 dient nicht gerade der Lesbarkeit und Variante 2 bedeutet mehr Schreibarbeit. Eine Funktionierende Abfrage würde bei PostgreSQL dann wie Folgt lauten:

1UPDATE "Contact"
2SET "strName" = 'Muster'
3WHERE "ContactID" = 5

Einfache Anführungszeichen gehen übrigens auch nicht…