2 Häufig gestellte Fragen (FAQ) zu PostgreSQL
4 Current maintainer: Bruce Momjian (bruce@momjian.us).
6 Deutsche Übersetzung von Ian Barwick (barwick@gmail.com).
8 Letzte Aktualisierung der deutschen Übersetzung: Fr., den 19.10.2007,
11 Die aktuellste Version dieses Dokuments liegt auf der
13 * http://www.postgresql.org/docs/faqs.FAQ.html (engl.)
14 * http://www.postgresql.org/docs/faqs.FAQ_german.html (dt.)
16 Übersetzungen dieses Dokuments in anderen Sprachen sowie plattform-
17 spezifische FAQs können unter http://www.postgresql.org/docs/faq/
19 _________________________________________________________________
23 1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
24 1.2) Wer kontrolliert PostgreSQL?
25 1.3) Welchem Copyright unterliegt PostgreSQL?
26 1.4) Auf welchen Plattformen läuft PostgreSQL?
27 1.5) Woher bekomme ich PostgreSQL?
28 1.6) Was ist die neueste Version von PostgreSQL?
29 1.7) Wo bekomme ich Support für PostgreSQL?
30 1.8) Wie kann ich einen Fehlerbericht abgeben?
31 1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
32 1.10) Welche Dokumentation ist für PostgreSQL verfügbar?
33 1.11) Wie kann ich SQL lernen?
34 1.12) Wie kann ich im Entwicklerteam mitarbeiten?
35 1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
36 1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in
37 verschiedenen Ländern klar?
39 Fragen zu Benutzerprogrammen
41 2.1) Welche Schnittstellen gibt es für PostgreSQL?
42 2.2) Wie kann man PostgreSQL mit einer Website nutzen?
43 2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
47 3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
48 3.2) Wie regle ich Zugriffe von anderen Rechnern?
49 3.3) Wie kann ich eine bessere Performanz erreichen?
50 3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar?
51 3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
52 Verbindung aufzubauen versuche. Warum?
53 3.6) Wie wird PostgreSQL aktualisiert?
54 3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL?
58 4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen
59 bzw. eine beliebige Zeile in einer Abfrage aus?
60 4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder
61 Benutzer in der Datenbank definiert sind? Wie bekomme ich die von psql
63 4.3) Wie ändere ich den Datentyp einer Spalte?
64 4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine
66 4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer
67 typischen Textdatei abzuspeichern?
68 4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht.
70 4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
72 4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei
73 einer Suche, bei der Groß- und Kleinschreibweisen ignoriert werden?
74 Wie verwende ich einen Index bei solchen Suchabfragen?
75 4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
76 4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
77 4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung
79 4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
80 4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern?
81 4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch
82 nicht zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
83 Sequenz-/SERIAL-Spalte?
84 4.12) Was ist ein OID? Was ist ein CTID?
85 4.13) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in
87 4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir
89 4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
90 aktuelle Uhrzeit enthalten soll?
91 4.16) Wie führe ich eine OUTER JOIN durch?
92 4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
93 4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
95 4.19) Warum bekomme ich eine Fehlermeldung wie
96 "relation with OID ##### does not exist" wenn ich temporäre Tabellen
98 PL/PgSQL-Funktionen benutze?
99 4.20) Welche Replikationslösungen gibt es?
100 4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage
101 nicht erkannt? Warum werden Großbuchstaben umgewandelt?
102 _________________________________________________________________
106 1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
108 Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen
109 Sprachgebrauch hat sich die Kurzform "Postgres" auch durchgesetzt.
110 (Für diejenigen, die es interessiert: eine MP3-Datei mit der
111 amerikanischen Aussprache befindet sich hier:
112 http://www.postgresql.org/files/postgresql.mp3
114 PostgreSQL ist ein objektrelationales Datenbanksystem, das die Vorzüge
115 von kommerziellen Datenbanksystemen mit zukunftsweisenden Innovationen
116 kombiniert. PostgreSQL ist freie Software und dessen kompletter
117 Quellcode ist öffentlich verfügbar.
119 Die PostgreSQL-Entwicklung wird von einem Team von meist freiwilligen
120 Entwicklern durchgeführt. Dieses Team ist für die Gesamtentwicklung
121 von PostgreSQL verantwortlich. Es handelt sich um ein
122 Gemeinschaftsprojekt, das nicht von einer bestimmten Firma
123 kontrolliert wird. Lesen Sie die Entwickler-FAQ:
124 http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn Sie an einer
125 Mitarbeit interessiert sind.
127 1.2) Wer kontrolliert PostgreSQL?
129 Falls Sie nach dem Namen eines etwaigen Inhabers bzw. nach einem
130 allmächtigen Zentralkommittee suchen - sparen Sie sich die Mühe, sowas
131 existiert gar nicht. Es gibt zwar das "Core Committee" sowie
132 Entwickler, die CVS-Schreibberechtigung haben, jedoch haben diese
133 Gruppen eher nur eine administrative Rolle. Das Projekt wird durch die
134 Community gesteuert, die aus den Entwicklern sowie natürlich auch den
135 Nutzern besteht - jeder kann daran teilnehmen. (Lesen Sie die
136 Entwickler-FAQ: http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn
137 Sie an der PostgreSQL-Entwicklung teilnehmen möchten).
139 1.3) Welchem Copyright unterliegt PostgreSQL?
141 PostgreSQL wird unter der klassischen BSD-Lizenz herausgegeben. Im
142 Grunde genommen erlaubt diese den Nutzern, beliebig mit dem Code
143 umzugehen, auch der Weiterverkauf von Binärversionen ohne Quellcode
144 ist erlaubt. Die einzige Einschränkung besteht darin, dass PostgreSQL
145 auf keinen Fall für etwaige Probleme mit der Software haftet. Außerdem
146 muß der Copyright- Text in allen Kopien der Software enthalten sein.
147 Dies ist der Originaltext der BSD-Lizenz:
149 PostgreSQL Data Base Management System
151 Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
152 Portions Copyright (c) 1994-6 Regents of the University of California
154 Permission to use, copy, modify, and distribute this software and its
155 documentation for any purpose, without fee, and without a written
156 agreement is hereby granted, provided that the above copyright notice
157 and this paragraph and the following two paragraphs appear in all
160 IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
161 FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
162 INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
163 ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
164 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
166 THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
167 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
168 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
169 PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
170 CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
171 UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
173 Es gilt die Copyright-Klausel im Original!
175 1.4) Auf welchen Plattformen läuft PostgreSQL?
177 Normalerweise kann PostgreSQL auf jeder modernen UNIX-kompatiblen
178 Plattform eingesetzt werden. Diejenigen Plattformen, die bei der
179 jeweiligen Versionsfreigabe getestet wurden, sind in den
180 Installationsanleitungen aufgelistet.
182 PostgreSQL läuft auch auf Microsoft NT-basierten Betriebssystemen wie
183 Windows 2000 SP4, XP und Server 2003. Ein vorgefertigtes
184 Installationspaket kann von http://pgfoundry.org/projects/pginstaller
185 heruntergeladen werden. DOS-basierte Windows-Versionen (Win95, Win98,
186 WinMe) können PostgreSQL nur mit Hilfe der Cygwin-Umgebung ausführen.
188 Eine Portierung für Novell Netware 6 gibt es unter
189 http://forge.novell.com sowie eine OS/2 (eComStation) version unter
190 http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
191 SQL&stype=all&sort=type&dir=%2F.
193 1.5) Woher bekomme ich PostgreSQL?
195 Per Web-Browser hier: http://www.postgresql.org/ftp/ und per FTP hier:
196 ftp://ftp.postgresql.org/pub/.
198 1.6) Was ist die neueste Version von PostgreSQL?
200 Die neueste Version von PostgreSQL ist 8.2.5.
202 Die Freigabe einer neuen Hauptversion erfolgt in der Regel jährlich,
203 kleinere Korrekturversionen alle paar Monaten.
205 1.7) Wo bekomme ich Support für PostgreSQL?
207 Die PostgreSQL-Community bietet Unterstützung per Mailing-Liste. Die
208 Web-Seite http://www.postgresql.org/community/lists/ bietet einen
209 Überblick. Die Listen general und bugs bieten einen guten Einstieg.
211 Eine deutschsprachige Mailing-Liste gibt es hier:
212 http://archives.postgresql.org/pgsql-de-allgemein/.
214 Der wichtigsten IRC-Channel ist #postgresql auf Freenode
215 (irc.freenode.net). Unter UNIX/Linux können Sie mit z.B. irc -c
216 '#postgresql' "$USER" irc.freenode.net. daran teilnehmen. Auf Freenode
217 gibt es einen spanischsprachigen Channel #postgresql-es, einen
218 französischen, #postgresqlfr sowie einen brasilianischen,
219 #postgresql-br . Es gibt außerdem einen PostgreSQL-Channel bei EFNet.
221 Eine Liste von Unternehmen, die Support für PostgreSQL auf
222 kommerzieller Basis leisten, kann unter
223 http://www.postgresql.org/support/professional_support eingesehen
226 1.8) Wie kann ich einen Fehlerbericht abgeben?
228 Nutzen Sie das Formular unter
229 http://www.postgresql.org/support/submitbug. Schauen Sie aber vorher
230 unter ftp://ftp.postgresql.org/pub/ nach, ob es mittlerweile eine
231 neuere PostgreSQL-Version gibt, in der der Fehler behoben wurde.
233 Bugs, die über das Formular bzw. eine der Mailing-Listen
234 bekanntgegeben wurden, erhalten typischerweise einer der folgenden
236 * es ist kein Bug, der Grund wird benannt
237 * es ist ein bereits bekannter Bug, der bereits auf der TODO-Liste
239 * der Bug wurde in der aktuellen Version behoben
240 * der Bug wurde bereits behoben, befindet sich aber noch nicht in
241 einer offiziell veröffentlichten Version
242 * es wird um eingehendere Informationen gebeten, z.B.:
245 + reproduzierbarer Fallbeispiel
246 + Debugging-Information
247 + Debugger-Backtrace-Ausgabe
248 * der Bug ist neu. Folgendes könnte passieren:
249 + ein Patch wird erstellt und in der nächsten Version
251 + oder der Bug kann nicht sofort behoben werden und wird auf
252 die TODO-Liste gesetzt
254 1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
256 PostgreSQL unterstützt eine erweiterte Teilmenge von SQL:2003. Siehe
257 unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html
258 für eine Auflistung der bekannten Bugs, fehlenden Features und
261 Eine Anfrage nach einem neuen Feature führt normalerweise zu einer der
263 * das Feature ist bereits auf der TODO-Liste
264 * das Feature ist nicht wünschenswert, weil:
265 + es vorhandene Funktionalität dupliziert, welche bereits dem
267 + es würde die Komplexität der Code-Basis erhöhen, ohne
268 nennenswerte Vorteile zu bringen
269 + es wäre unsicher bzw. unzuverlässig
270 * das neue Feature wird der TODO-Liste hinzugefügt
272 PostgreSQL verwendet kein Bugtracking-System, da es sich als
273 effizienter erwiesen hat, E-Mails direkt zu beantworten und die
274 TODO-Liste aktuell zu halten. In der Praxis werden Bugs sehr schnell
275 beseitigt, und diejenigen Bugs, die Auswirkungen auf eine große Anzahl
276 von Nutzern haben, werden meist kurzfristig korrigiert. Der einzige
277 Überblick über alle Änderungen, Verbesserungen und Korrekturen in
278 einer PostgreSQL-Version befindet sich in den CVS-Log-Meldungen. Auch
279 die Release-Notes listen nicht jede Änderung in der Software auf.
281 1.10) Welche Dokumentation ist für PostgreSQL verfügbar?
283 PostgreSQL bietet umfangreiche Dokumentation, darunter ein großes
284 Handbuch, man-Pages und einige kleine Testprogramme. Siehe das /doc-
285 Verzeichnis. Ausserdem sind alle Handbücher online unter
286 http://www.postgresql.org/docs/ verfügbar.
288 Zwei Bücher zu PostgreSQL sind online verfügbar unter
289 http://www.postgresql.org/docs/books/awbook.html und
290 http://www.commandprompt.com/ppbook/ .
292 Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter
293 http://www.postgresql.org/docs/books Diverse technische Artikel
294 befinden sich unter http://www.postgresql.org/docs/techdocs .
296 psql hat einige nützliche \d-Befehle, um Informationen über Typen,
297 Operatoren, Funktionen, Aggregate, usw. zu zeigen.
299 Die PostgreSQL-Website enthält noch mehr Dokumentation.
301 1.11) Wie kann ich SQL lernen?
303 Die oben erwähnten PostgreSQL-spezifische Bücher bieten einen guten
304 Einstieg. Viele PostgreSQL-Anwender mögen "The Practical SQL Handbook"
305 (Bowman et al., Addison Wesley). Andere dagegen mögen "The Complete
306 Reference SQL" (Groff et al., McGraw-Hill).
308 Es gibt ausserdem einige nützliche Online-Tutorials:
309 * http://www.intermedia.net/support/sql/sqltut.shtm
310 * http://sqlcourse.com
311 * http://www.w3schools.com/sql/default.asp
312 * http://mysite.verizon.net/Graeme_Birchall/id1.html
314 1.12) Wie kann ich im Entwicklerteam mitarbeiten?
316 Lesen Sie in der Entwickler-FAQ unter
317 http://www.postgresql.org/docs/faqs.FAQ_DEV.html nach.
319 1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
321 Es gibt verschiedene Methoden, Software zu messen: Eigenschaften,
322 Performanz, Zuverlässigkeit, Support und Preis.
325 PostgreSQL besitzt die meisten Eigenschaften - wie
326 Transaktionen, Unterabfragen (Subqueries), Trigger, Views,
327 referenzielle Integrität bei Fremdschlüsseln und verfeinertes
328 Locking - die bei großen kommerziellen DBMS vorhanden sind. Es
329 bietet außerdem einige anderen Eigenschaften, die diese nicht
330 immer haben, wie benutzerbestimmte Typen, Vererbung, Regeln,
331 und die Multi-Versionen-Steuerung zum Verringern
332 konkurrierender Locks.
335 Die Performanz von PostgreSQL ist mit der von kommerziellen und
336 anderen Open-Source-Datenbanken vergleichbar. In manchen
337 Bereichen ist es schneller, in anderen langsamer. In der Regel
338 beträgt der Unterschied +/-10%.
341 Es ist selbstredend, dass ein DBMS wertlos ist, wenn es nicht
342 zuverlässig arbeitet. Daher bemühen wir uns, nur streng
343 geprüften und beständigen Code freizugeben, der nur ein Minimum
344 an Programmfehlern aufweist. Jede Freigabe hat mindestens einen
345 Monat Betatest-Phase hinter sich, und unsere Freigabehistorie
346 beweist, dass wir stabile und solide Versionen freigeben, die
347 im Produktionsbetrieb genutzt werden können. Wir glauben, dass
348 wir im Vergleich mit anderer Datenbanksoftware vorteilhaft
352 Unsere Mailinglisten bieten die Möglichkeit, gemeinsam mit
353 einer großen Gruppe von Entwicklern und Benutzern mögliche
354 Probleme zu lösen. Wir können nicht immer eine Fehlerbehebung
355 garantieren, kommerzielle DBMS tun dies aber auch nicht. Der
356 direkte Kontakt zur Entwickler- und Benutzergemeinschaft und
357 der Zugriff auf die Handbücher und den Quellcode ermöglicht
358 einen im Vergleich zu anderen DBMS höherwertigeren Support. Es
359 gibt jedoch auch Anbieter von kommerziellen Support-Leistungen
360 (siehe FAQ-Punkt 1.7).
363 PostgreSQL ist frei verfügbar, sowohl für die kommerzielle wie
364 auch für die nicht-kommerzielle Nutzung. Sie können den
365 PostgreSQL-Code ohne Einschränkungen (außer denjenigen, die in
366 der oben angegebene BSD-artigen Lizenz erwähnt werden) in Ihr
369 1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in verschiedenen
372 Änderungen bei der US-Sommerzeit sind ab PostgreSQL Version 8.0.4
373 berücksichtigt. Änderungen in Canada und Western Australia sind ab
374 8.0.10 bzw. 8.1.6 berücksichtigt. PostgreSQL-Versionen vor 8.0 nutzen
375 die Zeitzonendatenbank des Betriebssystems, um die Sommerzeit zu
378 Fragen zu Benutzerprogrammen
380 2.1) Welche Schnittstellen gibt es für PostgreSQL?
382 Die PostgreSQL-Installation stellt nur Schnittstellen für C und
383 Embedded C bereit. Alle weitere Schnittstellen sind unabhängige
384 Projekte, die einzeln heruntergeladen werden werden müssen. Diese
385 Trennung ermöglicht individuelle Entwickler-Teams und
386 Entwicklungszyklen für die jeweiligen Projekte.
388 Einige Programmiersprachen wie PHP haben eine PostgreSQL-
389 Schnittstelle bereits eingebaut. Schnittstellen für Sprachen wie Perl,
390 TCL, Python und viele anderen sind unter http://gborg.postgresql.org
391 im Bereich Drivers/Interfaces verfügbar sowie per Internet-Suche.
393 2.2) Wie kann man PostgreSQL in einer Website nutzen?
395 Eine nette Einführung zu datenbank-gestützten Webseiten kann unter
396 http://www.webreview.com (engl.) eingesehen werden.
398 Für die Web-Integration ist PHP eine ausgezeichnete Schnittstelle. PHP
399 gibt es bei http://www.php.net
401 Für komplexere Aufgaben bietet sich die Perl-Schnittstelle mit CGI.pm
404 2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
406 Es gibt eine große Anzahl von GUI-Programmen für PostgreSQL - sowohl
407 kommerziell als auch Open-Source. Eine ausführliche Liste befindet
408 sich unter http://www.postgresql.org/docs/techdocs.54 .
409 _________________________________________________________________
411 Administrative Fragen
413 3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
415 Bei der Ausführung von configure die Option --prefix mit dem
416 Zielverzeichnis angeben.
418 3.2) Wie regle ich Zugriffe von anderen Rechnern?
420 PostgreSQL ist standardmäßig so eingestellt, dass Verbindungen nur vom
421 lokalen Rechner über Unix Domain Sockets bzw. TCP/IP möglich sind.
422 Verbindungen von anderen Rechnern werden erst dann ermöglicht, wenn
423 Sie in der Datei postgresql.conf die Einstellung listen_addresses
424 anpassen, in der Datei $PGDATA/pg_hba.conf host-basierte
425 Authentifizierung einschalten und den Server neu starten.
427 3.3) Wie kann ich eine bessere Performanz erreichen?
429 Es gibt drei große Bereiche, in denen Performanzverbesserungen erzielt
433 Die Modifizierung von Abfragen kann eine bessere Performanz
436 + Erstellung von Indexen, einschliesslich partieller Indexe
437 sowie Expressionsindexe
438 + Einsatz von COPY anstelle multipler INSERT-Anweisungen
439 + Gruppierung von mehreren Abfragen innerhalb einer
440 Transaktion, um Aufwand beim Abschluss von Transaktionen
442 + Einsatz von CLUSTER beim Holen von einer großen Anzahl von
443 Datenreihen aus einem Index
444 + Einsatz von LIMIT, um eine Untermenge der Abfragen-
445 ergebnisse zurückzuliefern
446 + Einsatz von vorbereiteten Befehlen (prepared queries)
447 + Einsatz von ANALYZE, um die Datenbankstatistik für den
448 Abfragenplaner aktuell zu halten
449 + Regelmäßiger Einsatz von VACUUM bzw. pg_autovacuum
450 + Bei großen Datenveränderungen die Löschung von Indexen
453 Einige Einstellungen in der Datei postgresql.conf wirken auf
454 die Performanz aus. Das Handbuch enthält unter
455 http://www.postgresql.org/docs/current/static/runtime-config.ht
456 ml eine komplette Auflistung. Kommentare zu den jeweiligen
457 Einstellungen gibt es unter
458 http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
460 http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
463 Die Auswirkung von Hardware auf Performanz wird unter
464 http://momjian.us/main/writings/pgsql/hw_performance/index.html
465 und http://www.powerpostgresql.com/PerfList/ erläutert.
467 3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar?
469 Unter den Optionen für die Server-Konfigurierung gibt es zahlreiche
470 log_*-Variablen, die die Ausgabe von Abfrage- und Prozessstatistiken
471 ermöglichen. Diese können für Debugging-Zwecke sowie Performanz-Tests
474 3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
475 Verbindung aufzubauen versuche. Warum?
477 Ihr System hat die maximal zulässige Anzahl von Datenbankverbindungen
478 erreicht (Voreinstellung 100). Sie müssen die maximale Anzahl der
479 gleichzeitig ausführbaren Backend-Prozesse hochsetzen, indem Sie in
480 postgresql.conf den Wert max_connections ändern und den Server
483 3.6) Wie wird PostgreSQL aktualisiert?
485 Allgemeine Informationen zur Aktualisierung von PostgreSQL gibt es auf
486 der Seite http://www.postgresql.org/support/versioning. Detaillierte
487 technische Informationen gibt es auf der Seite
488 http://www.postgresql.org/docs/current/static/install-upgrading.html
490 3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL?
492 PostgreSQL läuft auf fast jeder Hardware-Kombination. Im PC-Bereich
493 gibt es allerdings sehr große Abweichungen in der Qualität. Für einen
494 Arbeitsplatz- oder Entwicklungsrechner mag dies nicht so bedeutend
495 sein, im Server-Betrieb jedoch lohnt sich auf jeden Fall die
496 Investition in teurere Bestandteile (Stichwörter ECC-Speicher, SCSI,
497 Hauptplatinen und Netzteile von namhaften Herstellern). Nutzen Sie
498 unsere Mailing-Listen, um Hardware-Optionen zu diskutieren.
499 _________________________________________________________________
503 4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw. eine
504 beliebige Zeile in einer Abfrage aus?
506 Wenn Sie bei der Ausführung der Abfrage die Anzahl der anzufordenden
507 Reihen bereits kennen, nutzen Sie LIMIT. Wenn die ORDER BY- Anweisung
508 mit einem Index verwendet wird, ist es möglich, dass die gesamte
509 Abfrage nicht ausgeführt werden muss. Wenn Sie die Anzahl der der
510 anzufordenden Reihen nicht kennen, verwenden Sie einen Cursor und
513 Um eine beliebige Zeile auszuwählen, nutzen Sie ORDER BY random():
520 4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder Benutzer
521 in der Datenbank definiert sind? Wie bekomme ich die von psql verwendeten
524 In psql zeigt der Befehl \dt eine Liste der Datenbanktabellen. Weitere
525 psql-Befehle lassen sich mit \? anzeigen. Sie können sich die Datei
526 pgsql/src/bin/psql/describe.c mit dem Quellcode für psql ansehen. Sie
527 enthält die SQL-Abfragen, die die Backslash-Kommandos (\) ausführen.
528 Sie können psql auch mit der -E Option starten. Danach gibt psql die
529 Abfragen aus, die es bei der Ausführung der Befehle benutzt. Außerdem
530 biete PostgreSQL ein SQL-kompatibles INFORMATION SCHEMA, das
531 Metainformation über die Datenbank zur Verfügung stellt.
533 Mit psql -l können Sie alle Datenbanken anzeigen lassen.
535 Die Datei pgsql/src/tutorial/syscat.source enthält außerdem viele
536 SELECT- Abfragen, mit deren Hilfe man Information über die
537 Systemtabellen erhalten kann.
539 4.3) Wie ändere ich den Datentyp einer Spalte?
541 Ab Version 8.0 kann der Datentyp einer Spalte mit ALTER TABLE ALTER
542 COLUMN TYPE geändert werden, sofern der neue Datentyp die Werte des
543 alten Datentype aufnehmen kann.
545 Bei früheren Versionen gehen Sie wie folgt vor:
547 ALTER TABLE tabelle ADD COLUMN neue_spalte neuer_datentyp;
548 UPDATE tabelle SET neue_spalte = CAST(alte_spalte AS neuer_datentyp);
549 ALTER TABLE tabelle DROP COLUMN alte_spalte;
553 Um den Speicherplatz freizugeben, der von der gelöschten Spalte
554 verwendet wurde, führen Sie VACUUM FULL aus.
556 4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?
558 Es bestehen folgende Obergrenzen:
559 Maximale Größe eine Datenbank? unbeschränkt (es existieren
560 Datenbanken mit 32 TB)
561 Maximale Größe einer Tabelle? 32 TB
562 Maximale Größe einer Zeile? 400 GB
563 Maximale Größe einer Spalte? 1 GB
564 Maximale Anzahl von Zeilen in einer Tabelle?
566 Maximale Anzahl von Spalten in einer Tabelle?
567 250-1600 je nach Spaltentyp
568 Maximale Anzahl von Indexen für eine Tabelle?
571 Selbstverständlich sind dies theoretische Werte, die oft durch die
572 verfügbaren Platten- und Speicherressourcen beschränkt werden. Extreme
573 Größen können zu Leistungseinbußen führen.
575 Die maximale Tabellengröße von 32 TB benötigt keine
576 Large-File-Unterstützung im Betriebssystem. Große Tabellen werden in
577 Dateien mit einer Größe von je 1 GB aufgeteilt, wodurch etwaige
578 dateisystem-bedingte Beschränkungen nicht relevant sind.
580 Die maximale Tabellengröße und die maximale Anzahl von Spalten können
581 vervierfacht werden, indem man die Default-Blockgröße auf 32 KB
582 heraufsetzt. Die Tabellengröße kann auch durch Tabellenpartitionierung
585 Eine Einschränkung ist, dass Indexe nur auf Spalten erstellt werden
586 können, die bis etwa 2.000 Zeichen groß sind. Um auf größere Spalten
587 eine UNIQUE-Constraint setzen zu können, nutzen Sie einen funktionalen
588 Index mit dem MD5-Hash-Wert der Spalte. Um innerhalb einer großen, mit
589 Text belegten Spalte suchen zu können, verwenden Sie einen
592 4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer typischen
593 Textdatei abzuspeichern?
595 Eine PostgreSQL-Datenbank kann beim Abspeichern einer einfachen
596 Textdatei bis zu fünfmal mehr Platz gegenüber der eigentlichen Größe
597 der Datei beanspruchen.
599 Betrachten wir eine Datei mit 100.000 Zeilen mit einem Integer und
600 einer Textbeschreibung pro Zeile. Gehen wir davon aus, dass die
601 durchschnittliche Länge der Textbeschreibung 20 Byte beträgt. Die
602 einfache Datei würde 2,8 MB groß sein. Die Größe der
603 PostgreSQL-Datenbankdatei, die diese Daten enthält, liegt ungefähr bei
605 24 Bytes: jeder Zeilenkopf (ungefähr)
606 +24 Bytes: ein Integer-Feld und ein Textfeld
607 + 4 Bytes: Zeiger auf der Datenseite auf den Tupel
608 -----------------------------------------------
611 Die Größe einer Datenseite in PostgreSQL beträgt 8192 Bytes (8 KB),
614 --------------------- = 146 Zeilen pro Seite (abgerundet)
618 ------------------------ = 685 Datenbankseiten (aufgerundet)
621 633 Datenbankseiten * 8192 Bytes pro Seite = 5,185,536 bytes (5,2 MB)
623 Indexe beanspruchen nicht so viel Platz. Da sie jedoch die Daten
624 beinhalten, die sie indizieren, können auch sie sehr groß werden.
626 NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig
627 Platz in Anspruch nehmen.
629 4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht. Warum?
631 Indexe werden nicht automatisch bei jeder Abfrage verwendet. Indexe
632 werden nur dann verwendet, wenn die abzufragende Tabelle eine
633 bestimmte Größe übersteigt, und die Abfrage nur eine kleine
634 Prozentzahl der Tabellenzeilen abfragt. Der Grund hierfür ist der,
635 dass die durch einen Index verursachten Festplattenzugriffe manchmal
636 länger dauern würden als ein einfaches Auslesen aller Tabellenzeilen
637 (sequentieller Scan).
639 Um festzustellen, ob ein Index verwendet werden soll, braucht
640 PostgreSQL Statistiken über die Tabelle. Diese Statistiken werden
641 durch die Anweisungen VACUUM ANALYZE bzw. ANALYZE berechnet. Anhand
642 der Statistiken kennt der Abfragenoptimierer die Anzahl der
643 Tabellenzeilen und kann besser entscheiden, ob Indexe verwendet werden
644 sollen. Statistiken sind auch bei der Ermittlung der optimalen
645 JOIN-Reihenfolgen und -Methoden wertvoll. Daher sollten diese
646 regelmässig durchgeführt werden, da sich der Inhalt einer Tabelle ja
649 Indexe werden normalerweise nicht in ORDER BY-Abfrage oder in JOINs
650 verwendet. Ein sequentieller Scan mit anschließendem explizitem
651 Sortiervorgang ist normalerweise schneller als ein Index-Scan einer
652 großen Tabelle. Jedoch wird bei einer Abfrage, in der LIMIT zusammen
653 mit ORDER BY verwendet wird, oftmals ein Index verwendet, da nur ein
654 kleiner Abschnitt der Tabelle zurückgeliefert wird.
656 Sollte es danach aussehen, also ob der Optimierer irrtümlich einen
657 sequentiellen Scan ausführt, führen Sie SET enable_seqscan TO 'off'
658 aus und prüfen Sie, ob die Indexabfrage dadurch scheller geworden ist.
660 Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, können Indexe
661 nur unter bestimmten Umständen verwendet werden:
662 * Das Suchmuster muss sich an Anfang des Strings befinden, d.h.:
663 + LIKE-Suchmuster dürfen nicht mit % anfangen;
664 + ~ (reguläre Ausdrücke) müssen mit ^ anfangen.
665 * Das Suchmuster darf nicht mit einer Zeichenklasse (z.B. [a-e])
667 * Suchmuster, die Gross- und Kleinschreibung nicht berücksichtigen
668 (z.B. ILIKE bzw. ~*), verwenden keine Indexe. Stattdessen können
669 funktionale Indexe verwendet werden, die im Punkt 4.8 beschrieben
671 * Die Standard-Locale "C" muss während der Datenbank-Initialisierung
672 mit initdb verwendet worden sein, da andere locales den
673 nächstgrößten Wert nicht ermitteln können. Es ist allerdings
674 möglich, einen besonderen text_pattern_ops-Index für solche Fälle
677 In Versionen vor 8.0 werden Indexe oft nicht benutzt, wenn die
678 jeweiligen Datentypen nicht genau übereinstimmen. Dies gilt besonders
679 für Indexe auf Spalten mit den Datentypen INT2, INT8 und NUMERIC
681 4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
684 Vgl. die EXPLAIN Man-Page.
686 4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei einer
687 Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? Wie verwende
688 ich einen Index bei solchen Suchabfragen?
690 Der Operator ~ wendet einen regulären Ausdruck an und ~* wendet ihn
691 an, ohne die Groß- und Kleinschreibung zu beachten. Ebenso beachtet
692 LIKE die Groß- und Kleinschreibung, und ILIKE nicht.
694 Gleichheitsvergleiche, die Groß- und Kleinschreibung ignorieren,
695 werden in der Regel so ausgedruckt:
698 WHERE LOWER(spalte) = 'abc'
700 Hier wird kein normaler Index benutzt. Legt man hingegen einen
701 funktionalen Index an, so wird er auf jeden Fall verwendet:
702 CREATE INDEX tabelle_index ON tabelle (LOWER(spalte))
704 Falls der obige Index als einen UNIQUE-Index angelegt wird, können
705 keine Werte in die Spalte eingefügt werden, die sich nur durch ihre
706 Groß- und Kleinschreibung unterscheiden. Um Fehler zu vermeiden muß
707 ein CHECK-Constraint oder ein Trigger eingesetzt werden.
709 4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? Kann nach der
710 NULL-Belegung sortiert werden?
712 Testen Sie die Spalte mit IS NULL bzw. IS NOT NULL.
717 Um die Spalte danach zu sortieren, ob sie mit NULL belegt ist oder
718 nicht, verwenden Sie die Bedingungen IS NULL bzw. IS NOT NULL in der
719 ORDER BY-Klausel. Da Bedingungen, die wahr sind, höher als das
720 Gegenteil sortiert werden, bewirkt die folgende Abfrage, dass die
721 NULL-Spalten zuerst gelistet werden:
724 ORDER BY (spalte IS NOT NULL)
726 4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
728 Typ interner Name Bemerkungen
729 -------------------------------------------------
730 VARCHAR(n) varchar die Größe legt die Maximallänge fest; kein
731 Auffüllen mit Leerzeichen
732 CHAR(n) bpchar mit Leerzeichen gefüllt bis zur angegebenen Länge
733 TEXT text keine obere Schranke für die Länge
734 BYTEA bytea Bytearray mit variabler Länge (auch für
736 "char" char 1 Zeichen
738 Der interne Name kommt vor allem in den Systemkatalogen und in manchen
741 Die ersten vier Typen sind "varlena"-Typen (d.h. die ersten vier Bytes
742 geben die Länge an, gefolgt von den Daten). Daher ist der tatsächlich
743 belegte Platz immer etwas mehr als die deklarierte Feldgröße.
744 Allerdings wird unter Umständen auf diese Datentypen Datenkompression
745 durch das TOAST- Verfahren angewendet, womit der tatsächlich belegte
746 Platz auch geringer als erwartet ausfallen kann.
748 Für die Speicherung von Zeichenketten variabler Länge empfiehlt sich
749 VARCHAR(n). Die maximale Länge eines VARCHAR(n)-Felds wird bei der
750 Tabellendefinition festgelegt. TEXT setzt keine Längengrenze,
751 allerdings gibt es eine systembedingte Obergrenze von 1 GB.
753 CHAR(n) ist geeignet für die Speicherung von Zeichenketten, die alle
754 die gleiche Länge haben. Bitte beachten Sie, dass CHAR(n) automatisch
755 Zeichenketten bis zur definierten Feldlänge mit Leerzeichen ausfüllt,
756 während bei VARCHAR(n) nur die tatsächlich eingegebene Zeichenkette
759 BYTEA ist für binäre Daten, besonders für Werte, die NULL-Bytes haben.
761 Alle der hier erwähnten Typen weisen ähnliche Performanzeigenschaften
764 4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des
767 PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch
768 eine Sequenz auf die angegebene Spalte. Zum Beispiel:
769 CREATE TABLE person (
775 CREATE SEQUENCE person_id_seq;
776 CREATE TABLE person (
777 id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
783 Die create_sequence Man-Page liefert weitere Informationen über
786 4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
788 Eine Möglichkeit wäre, mit der nextval()-Funktion den nächsten
789 SERIAL-Wert von dem Sequenzobjekt vor der Auszuführung einer
790 INSERT-Anweisung anzufordern und ihn dann explizit in die
791 INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.11.1
792 könnte dieser Vorgang in einer Pseudosprache so aussehen:
793 new_id = output of execute("SELECT nextval('person_id_seq')");
794 execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
796 Danach stünde der neue Wert in der Variablen new_id für die Verwendung
797 in weiteren Abfragen zur Verfügung, zum Beispiel als Fremdschlüssel
798 zur Tabelle 'person'). Bitte beachten Sie, dass der Name des
799 automatisch erstellten SEQUENCE-Objektes folgenden Name hat:
800 «table»_«serialcolumn»_seq wobei 'table' und 'serialcolumn' die Namen
801 der jeweils betreffenden Tabelle / Spalte darstellen.
803 Als weitere Möglichkeit können Sie nach einer INSERT-Anweisung den
804 automatisch eingefügten SERIAL-Wert mit der currval()-Funktion
806 execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
807 new_id = output of execute("SELECT currval('person_id_seq')");
809 4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern?
811 Nein. currval() liefert einen Wert zurück, der von Ihrer
812 Datenbank-Session bestimmt wird, und der anderen Sessionen nicht zur
815 4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht
816 zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
817 Sequenz-/SERIAL-Spalte?
819 Um die gleichzeitige Abarbeitung von Transaktionen zu verbessern,
820 werden Sequenzen gerade nicht für andere Transaktionen gesperrt,
821 sondern die Sequenznummern werden den laufenden Transaktionen sofort
822 zugeteilt. Lücken in der Sequenznummerierung werden durch abgebrochene
823 Transaktionen verursacht.
825 4.12) Was ist ein OID? Was ist ein CTID?
827 Jede Zeile, die in PostgreSQL erzeugt wird, bekommt eine eindeutige
828 OID, sofern die Tabelle nicht mit der Option WITHOUT OIDS angelegt
829 wurde. OIDs sind automatisch zugewiesene 4-Byte-Integer, die innerhalb
830 der gesamten Datenbank einmalig sind. Allerdings laufen sie bei einem
831 Wert von ungefähr 4 Milliarden über. PostgreSQL verwendet OIDs, um
832 seine interne Systemtabellen zu verbinden.
834 Um einmalige Idenfikatoren in Datentabellen zu erstellen, wird
835 allerdings empfohlen, statt OIDs Werte zu verwenden, die vonSERIAL-
836 Sequenzen erzeugt werden. SERIAL-Sequenzen sind innerhalb einer
837 Tabelle einmalig und daher weniger anfällig für Überläufe. Außerdem
838 können 8-Byte-Sequenzwerte mit SERIAL8 erzeugt werden.
840 CTIDs werden benutzt, um bestimmte physikalische Zeilen durch Block
841 und Offset Werte zu identifizieren. CTIDs verändern sich, sobald
842 Zeilen verändert oder zurückgeladen werden. Sie werden in
843 Indexeinträgen benutzt um auf die physikalischen Zeilen zu zeigen.
845 4.13) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in
848 Wahrscheinlich gibt es keinen virtuellen Speicher mehr in Ihrem System
849 oder Ihr Kernel hat niedrige Höchstgrenzen für bestimmte Ressourcen.
850 Probieren Sie vor dem Start von postmaster folgendes:
854 Je nach benutzter Shell wird nur einer dieser Befehle erfolgreich
855 ausgeführt werden. Auf jedem Fall wird die Grenze des Datensegments
856 für Prozesse erhöht werden und eventuell die erfolgreiche Ausführung
857 der Abfrage ermöglichen. Falls Sie ein Problem mit dem SQL-CLient
858 haben, weil das Backend zu viele Daten zurückliefert, versuchen Sie
859 dies vor dem Start des SQL-Clients.
861 4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir läuft?
863 Geben Sie in psql SELECT VERSION(); ein.
865 4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
866 aktuelle Uhrzeit enthalten soll?
868 Dazu verwenden Sie CURRENT_TIMESTAMP:
869 CREATE TABLE test (x INT, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
871 4.16) Wie führe ich eine OUTER JOIN durch?
873 PostgreSQL unterstützt OUTER JOINs nach dem SQL- Standardsyntax. Hier
877 LEFT OUTER JOIN tabelle_2 t2 ON (t1.spalte = t2.spalte)
882 LEFT OUTER JOIN tabelle_2 t2 USING (spalte)
884 Diese identischen Abfragen verknüpfen tabelle_1 mit tabelle_2 über die
885 Spalte 'spalte' und geben außerdem alle unverknüpften Zeilen in
886 tabelle_1 (diejenigen, die keine Entsprechung in tabelle_2 haben)
887 zurück. Ein RIGHT JOIN würde hingegen alle unverknüpften Zeilen in
888 tabelle_2 hinzufügen und ein FULL JOIN würde alle verknüpften Zeilen
889 sowie jeweils alle unverknüpften Zeilen aus den beiden Tabellen
890 zurückliefern. Die Angabe von OUTER ist nicht zwingend und kann in
891 LEFT, RIGHT und FULL-Verknüpfungen weggelassen werden. Normale
892 Verknüpfungen sind INNER JOINs.
894 4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
896 Es gibt keinen Weg, innerhalb einer Abfrage auf mehr als eine
897 Datenbank zuzugreifen. Da PostgreSQL datenbank-spezifische
898 Systemkataloge lädt, ist eine datenbankübergreifende Abfrage nicht
901 contrib/dblink ist eine Erweiterung, die datenbankübergreifende
902 Abfragen über Funktionsaufrufe ermöglicht.
904 4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion zurückgeben
907 Funktionen können mehrere Zeilen und Spalten zurückgeben, vgl.:
908 http://www.postgresql.org/docs/techdocs.17.
910 4.19) Warum bekomme ich eine Fehlermeldung wie "relation with OID ##### does
911 not exist" wenn ich temporäre Tabellen in PL/PgSQL-Funktionen benutze?
913 In PostgreSQL-Versionen vor 8.3 verarbeitet PL/PgSQL Funktionen in
914 einer Cache. Dies hat eine unangenehme Nebenwirkung, nämlich dass wenn
915 eine PL/PgSQL-Funktion auf eine temporäre Tabelle zugreift, und diese
916 Tabelle anschließend gelöscht bzw. neu erstellt wird, die Funktion
917 fehlschlagen wird, da die gecachten Funktionsinhalte noch auf die alte
918 temporäre Tabelle zeigen. Die Lösung für diese Probleme besteht darin,
919 in der PL/PgSQL- Funktion mittels EXECUTE auf temporäre Tabellen
920 zuzugreifen. Dies bewirkt, dass bei jedem Funktionsruf die betreffende
921 Abfrage neu geparst wird.
923 Dieses Problem taucht in PostgreSQL 8.3 und späteren Versionen nicht
926 4.20) Welche Replikationslösungen gibt es?
928 Der Begriff "replikation" umfasst mehrere verschiedene Technologien,
929 jede mit eigenen Vor- und Nachteilen.
931 Mit "Master/slave"-Replikation werden Änderungen in einer
932 Hauptdatenbank durchgeführt und an "Sklaven" verteilt, die im
933 Nur-Lese-Modus arbeiten. Die populärste Lösung für PostgreSQL ist
936 "Multi-master replication" ermöglicht sowohl lesende als auch
937 schreibende Zugriffe über mehrere Datenbank-Server hinweg. Allerdings
938 hat diese Art von Replikation eine negative Auswirkung auf die
939 Performanz durch die Notwendigkeit, Änderungen zwischen Servern zu
940 synchronisieren. Pgcluster ist die populärste freie Lösung für
943 Es gibt auch einige kommerzielle und hardware-basierte
944 Replikationslösungen für verschiedene Arten der Replikation.
946 4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage nicht
947 erkannt? Warum werden Großbuchstaben umgewandelt?
949 Die häufigste Ursache ist die Verwendung von Gänsefüßchen bei der
950 Anlegung von Tabellen, z.B.:
951 CREATE TABLE "Tabelle"
954 Dadurch werden Tabellen- und Spaltennamen (sog. Identifikatoren) in
955 genau der Schreibweise gespeichert (vgl. Dokumentation), was dazu
956 führt, dass man sie danach immer in Gänsefüßchen angeben muss. Im
957 obigen Beispiel muss man also immer etwa SELECT * FROM "Tabelle"
958 verwenden. Um dieses Problem zu vermeiden, müssen Sie immer eines der
959 folgenden Punkte beachten:
960 * bei der Tabellenanlegung keine Gänsefüßchen verwenden;
961 * in Identifikatoren nur Kleinschreibung verwenden;
962 * immer Identifikatoren mit Gänsefüßchen versehen
963 _________________________________________________________________
965 Anmerkungen des Übersetzers
967 Die englische Vorlage dieser FAQ wird ständig überarbeitet. Daher
968 liegt die Übersetzung nicht immer auf dem aktuellsten Stand.
970 Die aktuellste Version der deutschen Übersetzung befindet sich immer
971 unter http://sql-info.de/de/postgresql/FAQ_german.html. Diese
972 "Arbeitsversion" enthält eventuell Änderungen, die noch nicht auf der
973 PostgreSQL-Website eingebunden worden sind.
975 Über Verbesserungshinweise und Korrekturvorschläge sowie
976 Verständnisfragen zum Inhalt der FAQ freue ich mich. Ich nehme auch
977 allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf
978 die Mailing-Listen als schnelle und zuverlässige Anlaufstellen.