diff options
Diffstat (limited to 'doc/FAQ_german')
-rw-r--r-- | doc/FAQ_german | 978 |
1 files changed, 0 insertions, 978 deletions
diff --git a/doc/FAQ_german b/doc/FAQ_german deleted file mode 100644 index 1459e5a08c4..00000000000 --- a/doc/FAQ_german +++ /dev/null @@ -1,978 +0,0 @@ - - Häufig gestellte Fragen (FAQ) zu PostgreSQL - - Current maintainer: Bruce Momjian (bruce@momjian.us). - - Deutsche Übersetzung von Ian Barwick (barwick@gmail.com). - - Letzte Aktualisierung der deutschen Übersetzung: Fr., den 19.10.2007, - 17:00 MEZ - - Die aktuellste Version dieses Dokuments liegt auf der - PostgreSQL-Website: - * http://www.postgresql.org/docs/faqs.FAQ.html (engl.) - * http://www.postgresql.org/docs/faqs.FAQ_german.html (dt.) - - Übersetzungen dieses Dokuments in anderen Sprachen sowie plattform- - spezifische FAQs können unter http://www.postgresql.org/docs/faq/ - eingesehen werden. - _________________________________________________________________ - - Allgemeine Fragen - - 1.1) Was ist PostgreSQL? Wie wird es ausgesprochen? - 1.2) Wer kontrolliert PostgreSQL? - 1.3) Welchem Copyright unterliegt PostgreSQL? - 1.4) Auf welchen Plattformen läuft PostgreSQL? - 1.5) Woher bekomme ich PostgreSQL? - 1.6) Was ist die neueste Version von PostgreSQL? - 1.7) Wo bekomme ich Support für PostgreSQL? - 1.8) Wie kann ich einen Fehlerbericht abgeben? - 1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features? - 1.10) Welche Dokumentation ist für PostgreSQL verfügbar? - 1.11) Wie kann ich SQL lernen? - 1.12) Wie kann ich im Entwicklerteam mitarbeiten? - 1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen? - 1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in - verschiedenen Ländern klar? - - Fragen zu Benutzerprogrammen - - 2.1) Welche Schnittstellen gibt es für PostgreSQL? - 2.2) Wie kann man PostgreSQL mit einer Website nutzen? - 2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle? - - Administrative Fragen - - 3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql? - 3.2) Wie regle ich Zugriffe von anderen Rechnern? - 3.3) Wie kann ich eine bessere Performanz erreichen? - 3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar? - 3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine - Verbindung aufzubauen versuche. Warum? - 3.6) Wie wird PostgreSQL aktualisiert? - 3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL? - - Fragen zum Betrieb - - 4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen - bzw. eine beliebige Zeile in einer Abfrage aus? - 4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder - Benutzer in der Datenbank definiert sind? Wie bekomme ich die von psql - verwendeten Abfragen? - 4.3) Wie ändere ich den Datentyp einer Spalte? - 4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine - Datenbank? - 4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer - typischen Textdatei abzuspeichern? - 4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht. - Warum? - 4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine - Abfrage auswertet? - 4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei - einer Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? - Wie verwende ich einen Index bei solchen Suchabfragen? - 4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? - 4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen? - 4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung - des Wertes? - 4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz? - 4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern? - 4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch - nicht zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner - Sequenz-/SERIAL-Spalte? - 4.12) Was ist ein OID? Was ist ein CTID? - 4.13) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in - AllocSetAlloc()"? - 4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir - läuft? - 4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die - aktuelle Uhrzeit enthalten soll? - 4.16) Wie führe ich eine OUTER JOIN durch? - 4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen? - 4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion - zurückgeben lassen? - 4.19) Warum bekomme ich eine Fehlermeldung wie - "relation with OID ##### does not exist" wenn ich temporäre Tabellen - in - PL/PgSQL-Funktionen benutze? - 4.20) Welche Replikationslösungen gibt es? - 4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage - nicht erkannt? Warum werden Großbuchstaben umgewandelt? - _________________________________________________________________ - - Allgemeine Fragen - - 1.1) Was ist PostgreSQL? Wie wird es ausgesprochen? - - Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen - Sprachgebrauch hat sich die Kurzform "Postgres" auch durchgesetzt. - (Für diejenigen, die es interessiert: eine MP3-Datei mit der - amerikanischen Aussprache befindet sich hier: - http://www.postgresql.org/files/postgresql.mp3 - - PostgreSQL ist ein objektrelationales Datenbanksystem, das die Vorzüge - von kommerziellen Datenbanksystemen mit zukunftsweisenden Innovationen - kombiniert. PostgreSQL ist freie Software und dessen kompletter - Quellcode ist öffentlich verfügbar. - - Die PostgreSQL-Entwicklung wird von einem Team von meist freiwilligen - Entwicklern durchgeführt. Dieses Team ist für die Gesamtentwicklung - von PostgreSQL verantwortlich. Es handelt sich um ein - Gemeinschaftsprojekt, das nicht von einer bestimmten Firma - kontrolliert wird. Lesen Sie die Entwickler-FAQ: - http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn Sie an einer - Mitarbeit interessiert sind. - - 1.2) Wer kontrolliert PostgreSQL? - - Falls Sie nach dem Namen eines etwaigen Inhabers bzw. nach einem - allmächtigen Zentralkommittee suchen - sparen Sie sich die Mühe, sowas - existiert gar nicht. Es gibt zwar das "Core Committee" sowie - Entwickler, die CVS-Schreibberechtigung haben, jedoch haben diese - Gruppen eher nur eine administrative Rolle. Das Projekt wird durch die - Community gesteuert, die aus den Entwicklern sowie natürlich auch den - Nutzern besteht - jeder kann daran teilnehmen. (Lesen Sie die - Entwickler-FAQ: http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn - Sie an der PostgreSQL-Entwicklung teilnehmen möchten). - - 1.3) Welchem Copyright unterliegt PostgreSQL? - - PostgreSQL wird unter der klassischen BSD-Lizenz herausgegeben. Im - Grunde genommen erlaubt diese den Nutzern, beliebig mit dem Code - umzugehen, auch der Weiterverkauf von Binärversionen ohne Quellcode - ist erlaubt. Die einzige Einschränkung besteht darin, dass PostgreSQL - auf keinen Fall für etwaige Probleme mit der Software haftet. Außerdem - muß der Copyright- Text in allen Kopien der Software enthalten sein. - Dies ist der Originaltext der BSD-Lizenz: - - PostgreSQL Data Base Management System - - Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - Portions Copyright (c) 1994-6 Regents of the University of California - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose, without fee, and without a written - agreement is hereby granted, provided that the above copyright notice - and this paragraph and the following two paragraphs appear in all - copies. - - IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY - FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, - INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND - ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE - PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF - CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, - UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - - Es gilt die Copyright-Klausel im Original! - - 1.4) Auf welchen Plattformen läuft PostgreSQL? - - Normalerweise kann PostgreSQL auf jeder modernen UNIX-kompatiblen - Plattform eingesetzt werden. Diejenigen Plattformen, die bei der - jeweiligen Versionsfreigabe getestet wurden, sind in den - Installationsanleitungen aufgelistet. - - PostgreSQL läuft auch auf Microsoft NT-basierten Betriebssystemen wie - Windows 2000 SP4, XP und Server 2003. Ein vorgefertigtes - Installationspaket kann von http://pgfoundry.org/projects/pginstaller - heruntergeladen werden. DOS-basierte Windows-Versionen (Win95, Win98, - WinMe) können PostgreSQL nur mit Hilfe der Cygwin-Umgebung ausführen. - - Eine Portierung für Novell Netware 6 gibt es unter - http://forge.novell.com sowie eine OS/2 (eComStation) version unter - http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre - SQL&stype=all&sort=type&dir=%2F. - - 1.5) Woher bekomme ich PostgreSQL? - - Per Web-Browser hier: http://www.postgresql.org/ftp/ und per FTP hier: - ftp://ftp.postgresql.org/pub/. - - 1.6) Was ist die neueste Version von PostgreSQL? - - Die neueste Version von PostgreSQL ist 8.2.5. - - Die Freigabe einer neuen Hauptversion erfolgt in der Regel jährlich, - kleinere Korrekturversionen alle paar Monaten. - - 1.7) Wo bekomme ich Support für PostgreSQL? - - Die PostgreSQL-Community bietet Unterstützung per Mailing-Liste. Die - Web-Seite http://www.postgresql.org/community/lists/ bietet einen - Überblick. Die Listen general und bugs bieten einen guten Einstieg. - - Eine deutschsprachige Mailing-Liste gibt es hier: - http://archives.postgresql.org/pgsql-de-allgemein/. - - Der wichtigsten IRC-Channel ist #postgresql auf Freenode - (irc.freenode.net). Unter UNIX/Linux können Sie mit z.B. irc -c - '#postgresql' "$USER" irc.freenode.net. daran teilnehmen. Auf Freenode - gibt es einen spanischsprachigen Channel #postgresql-es, einen - französischen, #postgresqlfr sowie einen brasilianischen, - #postgresql-br . Es gibt außerdem einen PostgreSQL-Channel bei EFNet. - - Eine Liste von Unternehmen, die Support für PostgreSQL auf - kommerzieller Basis leisten, kann unter - http://www.postgresql.org/support/professional_support eingesehen - werden. - - 1.8) Wie kann ich einen Fehlerbericht abgeben? - - Nutzen Sie das Formular unter - http://www.postgresql.org/support/submitbug. Schauen Sie aber vorher - unter ftp://ftp.postgresql.org/pub/ nach, ob es mittlerweile eine - neuere PostgreSQL-Version gibt, in der der Fehler behoben wurde. - - Bugs, die über das Formular bzw. eine der Mailing-Listen - bekanntgegeben wurden, erhalten typischerweise einer der folgenden - Reaktionen: - * es ist kein Bug, der Grund wird benannt - * es ist ein bereits bekannter Bug, der bereits auf der TODO-Liste - aufgenommen wurde - * der Bug wurde in der aktuellen Version behoben - * der Bug wurde bereits behoben, befindet sich aber noch nicht in - einer offiziell veröffentlichten Version - * es wird um eingehendere Informationen gebeten, z.B.: - + Betriebssystem - + PostgreSQL-Version - + reproduzierbarer Fallbeispiel - + Debugging-Information - + Debugger-Backtrace-Ausgabe - * der Bug ist neu. Folgendes könnte passieren: - + ein Patch wird erstellt und in der nächsten Version - eingebaut; - + oder der Bug kann nicht sofort behoben werden und wird auf - die TODO-Liste gesetzt - - 1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features? - - PostgreSQL unterstützt eine erweiterte Teilmenge von SQL:2003. Siehe - unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html - für eine Auflistung der bekannten Bugs, fehlenden Features und - zukünftigen Pläne. - - Eine Anfrage nach einem neuen Feature führt normalerweise zu einer der - folgenden Antworten: - * das Feature ist bereits auf der TODO-Liste - * das Feature ist nicht wünschenswert, weil: - + es vorhandene Funktionalität dupliziert, welche bereits dem - SQL-Standard folgt - + es würde die Komplexität der Code-Basis erhöhen, ohne - nennenswerte Vorteile zu bringen - + es wäre unsicher bzw. unzuverlässig - * das neue Feature wird der TODO-Liste hinzugefügt - - PostgreSQL verwendet kein Bugtracking-System, da es sich als - effizienter erwiesen hat, E-Mails direkt zu beantworten und die - TODO-Liste aktuell zu halten. In der Praxis werden Bugs sehr schnell - beseitigt, und diejenigen Bugs, die Auswirkungen auf eine große Anzahl - von Nutzern haben, werden meist kurzfristig korrigiert. Der einzige - Überblick über alle Änderungen, Verbesserungen und Korrekturen in - einer PostgreSQL-Version befindet sich in den CVS-Log-Meldungen. Auch - die Release-Notes listen nicht jede Änderung in der Software auf. - - 1.10) Welche Dokumentation ist für PostgreSQL verfügbar? - - PostgreSQL bietet umfangreiche Dokumentation, darunter ein großes - Handbuch, man-Pages und einige kleine Testprogramme. Siehe das /doc- - Verzeichnis. Ausserdem sind alle Handbücher online unter - http://www.postgresql.org/docs/ verfügbar. - - Zwei Bücher zu PostgreSQL sind online verfügbar unter - http://www.postgresql.org/docs/books/awbook.html und - http://www.commandprompt.com/ppbook/ . - - Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter - http://www.postgresql.org/docs/books Diverse technische Artikel - befinden sich unter http://www.postgresql.org/docs/techdocs . - - psql hat einige nützliche \d-Befehle, um Informationen über Typen, - Operatoren, Funktionen, Aggregate, usw. zu zeigen. - - Die PostgreSQL-Website enthält noch mehr Dokumentation. - - 1.11) Wie kann ich SQL lernen? - - Die oben erwähnten PostgreSQL-spezifische Bücher bieten einen guten - Einstieg. Viele PostgreSQL-Anwender mögen "The Practical SQL Handbook" - (Bowman et al., Addison Wesley). Andere dagegen mögen "The Complete - Reference SQL" (Groff et al., McGraw-Hill). - - Es gibt ausserdem einige nützliche Online-Tutorials: - * http://www.intermedia.net/support/sql/sqltut.shtm - * http://sqlcourse.com - * http://www.w3schools.com/sql/default.asp - * http://mysite.verizon.net/Graeme_Birchall/id1.html - - 1.12) Wie kann ich im Entwicklerteam mitarbeiten? - - Lesen Sie in der Entwickler-FAQ unter - http://www.postgresql.org/docs/faqs.FAQ_DEV.html nach. - - 1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen? - - Es gibt verschiedene Methoden, Software zu messen: Eigenschaften, - Performanz, Zuverlässigkeit, Support und Preis. - - Eigenschaften - PostgreSQL besitzt die meisten Eigenschaften - wie - Transaktionen, Unterabfragen (Subqueries), Trigger, Views, - referenzielle Integrität bei Fremdschlüsseln und verfeinertes - Locking - die bei großen kommerziellen DBMS vorhanden sind. Es - bietet außerdem einige anderen Eigenschaften, die diese nicht - immer haben, wie benutzerbestimmte Typen, Vererbung, Regeln, - und die Multi-Versionen-Steuerung zum Verringern - konkurrierender Locks. - - Performanz - Die Performanz von PostgreSQL ist mit der von kommerziellen und - anderen Open-Source-Datenbanken vergleichbar. In manchen - Bereichen ist es schneller, in anderen langsamer. In der Regel - beträgt der Unterschied +/-10%. - - Zuverlässigkeit - Es ist selbstredend, dass ein DBMS wertlos ist, wenn es nicht - zuverlässig arbeitet. Daher bemühen wir uns, nur streng - geprüften und beständigen Code freizugeben, der nur ein Minimum - an Programmfehlern aufweist. Jede Freigabe hat mindestens einen - Monat Betatest-Phase hinter sich, und unsere Freigabehistorie - beweist, dass wir stabile und solide Versionen freigeben, die - im Produktionsbetrieb genutzt werden können. Wir glauben, dass - wir im Vergleich mit anderer Datenbanksoftware vorteilhaft - dastehen. - - Support - Unsere Mailinglisten bieten die Möglichkeit, gemeinsam mit - einer großen Gruppe von Entwicklern und Benutzern mögliche - Probleme zu lösen. Wir können nicht immer eine Fehlerbehebung - garantieren, kommerzielle DBMS tun dies aber auch nicht. Der - direkte Kontakt zur Entwickler- und Benutzergemeinschaft und - der Zugriff auf die Handbücher und den Quellcode ermöglicht - einen im Vergleich zu anderen DBMS höherwertigeren Support. Es - gibt jedoch auch Anbieter von kommerziellen Support-Leistungen - (siehe FAQ-Punkt 1.7). - - Preis - PostgreSQL ist frei verfügbar, sowohl für die kommerzielle wie - auch für die nicht-kommerzielle Nutzung. Sie können den - PostgreSQL-Code ohne Einschränkungen (außer denjenigen, die in - der oben angegebene BSD-artigen Lizenz erwähnt werden) in Ihr - Produkt integrieren. - - 1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in verschiedenen - Ländern klar? - - Änderungen bei der US-Sommerzeit sind ab PostgreSQL Version 8.0.4 - berücksichtigt. Änderungen in Canada und Western Australia sind ab - 8.0.10 bzw. 8.1.6 berücksichtigt. PostgreSQL-Versionen vor 8.0 nutzen - die Zeitzonendatenbank des Betriebssystems, um die Sommerzeit zu - berechnen. - - Fragen zu Benutzerprogrammen - - 2.1) Welche Schnittstellen gibt es für PostgreSQL? - - Die PostgreSQL-Installation stellt nur Schnittstellen für C und - Embedded C bereit. Alle weitere Schnittstellen sind unabhängige - Projekte, die einzeln heruntergeladen werden werden müssen. Diese - Trennung ermöglicht individuelle Entwickler-Teams und - Entwicklungszyklen für die jeweiligen Projekte. - - Einige Programmiersprachen wie PHP haben eine PostgreSQL- - Schnittstelle bereits eingebaut. Schnittstellen für Sprachen wie Perl, - TCL, Python und viele anderen sind unter http://gborg.postgresql.org - im Bereich Drivers/Interfaces verfügbar sowie per Internet-Suche. - - 2.2) Wie kann man PostgreSQL in einer Website nutzen? - - Eine nette Einführung zu datenbank-gestützten Webseiten kann unter - http://www.webreview.com (engl.) eingesehen werden. - - Für die Web-Integration ist PHP eine ausgezeichnete Schnittstelle. PHP - gibt es bei http://www.php.net - - Für komplexere Aufgaben bietet sich die Perl-Schnittstelle mit CGI.pm - oder mod_perl. - - 2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle? - - Es gibt eine große Anzahl von GUI-Programmen für PostgreSQL - sowohl - kommerziell als auch Open-Source. Eine ausführliche Liste befindet - sich unter http://www.postgresql.org/docs/techdocs.54 . - _________________________________________________________________ - - Administrative Fragen - - 3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql? - - Bei der Ausführung von configure die Option --prefix mit dem - Zielverzeichnis angeben. - - 3.2) Wie regle ich Zugriffe von anderen Rechnern? - - PostgreSQL ist standardmäßig so eingestellt, dass Verbindungen nur vom - lokalen Rechner über Unix Domain Sockets bzw. TCP/IP möglich sind. - Verbindungen von anderen Rechnern werden erst dann ermöglicht, wenn - Sie in der Datei postgresql.conf die Einstellung listen_addresses - anpassen, in der Datei $PGDATA/pg_hba.conf host-basierte - Authentifizierung einschalten und den Server neu starten. - - 3.3) Wie kann ich eine bessere Performanz erreichen? - - Es gibt drei große Bereiche, in denen Performanzverbesserungen erzielt - werden können: - - Abfrageoptimierung - Die Modifizierung von Abfragen kann eine bessere Performanz - erzielen: - - + Erstellung von Indexen, einschliesslich partieller Indexe - sowie Expressionsindexe - + Einsatz von COPY anstelle multipler INSERT-Anweisungen - + Gruppierung von mehreren Abfragen innerhalb einer - Transaktion, um Aufwand beim Abschluss von Transaktionen - einzusparen - + Einsatz von CLUSTER beim Holen von einer großen Anzahl von - Datenreihen aus einem Index - + Einsatz von LIMIT, um eine Untermenge der Abfragen- - ergebnisse zurückzuliefern - + Einsatz von vorbereiteten Befehlen (prepared queries) - + Einsatz von ANALYZE, um die Datenbankstatistik für den - Abfragenplaner aktuell zu halten - + Regelmäßiger Einsatz von VACUUM bzw. pg_autovacuum - + Bei großen Datenveränderungen die Löschung von Indexen - - Server-Konfiguration - Einige Einstellungen in der Datei postgresql.conf wirken auf - die Performanz aus. Das Handbuch enthält unter - http://www.postgresql.org/docs/current/static/runtime-config.ht - ml eine komplette Auflistung. Kommentare zu den jeweiligen - Einstellungen gibt es unter - http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co - nf_e.html und - http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html. - - Hardware-Auswahl - Die Auswirkung von Hardware auf Performanz wird unter - http://momjian.us/main/writings/pgsql/hw_performance/index.html - und http://www.powerpostgresql.com/PerfList/ erläutert. - - 3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar? - - Unter den Optionen für die Server-Konfigurierung gibt es zahlreiche - log_*-Variablen, die die Ausgabe von Abfrage- und Prozessstatistiken - ermöglichen. Diese können für Debugging-Zwecke sowie Performanz-Tests - sehr nützlich sein. - - 3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine - Verbindung aufzubauen versuche. Warum? - - Ihr System hat die maximal zulässige Anzahl von Datenbankverbindungen - erreicht (Voreinstellung 100). Sie müssen die maximale Anzahl der - gleichzeitig ausführbaren Backend-Prozesse hochsetzen, indem Sie in - postgresql.conf den Wert max_connections ändern und den Server - neustarten. - - 3.6) Wie wird PostgreSQL aktualisiert? - - Allgemeine Informationen zur Aktualisierung von PostgreSQL gibt es auf - der Seite http://www.postgresql.org/support/versioning. Detaillierte - technische Informationen gibt es auf der Seite - http://www.postgresql.org/docs/current/static/install-upgrading.html - - 3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL? - - PostgreSQL läuft auf fast jeder Hardware-Kombination. Im PC-Bereich - gibt es allerdings sehr große Abweichungen in der Qualität. Für einen - Arbeitsplatz- oder Entwicklungsrechner mag dies nicht so bedeutend - sein, im Server-Betrieb jedoch lohnt sich auf jeden Fall die - Investition in teurere Bestandteile (Stichwörter ECC-Speicher, SCSI, - Hauptplatinen und Netzteile von namhaften Herstellern). Nutzen Sie - unsere Mailing-Listen, um Hardware-Optionen zu diskutieren. - _________________________________________________________________ - - Fragen zum Betrieb - - 4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw. eine - beliebige Zeile in einer Abfrage aus? - - Wenn Sie bei der Ausführung der Abfrage die Anzahl der anzufordenden - Reihen bereits kennen, nutzen Sie LIMIT. Wenn die ORDER BY- Anweisung - mit einem Index verwendet wird, ist es möglich, dass die gesamte - Abfrage nicht ausgeführt werden muss. Wenn Sie die Anzahl der der - anzufordenden Reihen nicht kennen, verwenden Sie einen Cursor und - FETCH. - - Um eine beliebige Zeile auszuwählen, nutzen Sie ORDER BY random(): - SELECT spalte - FROM tabelle - ORDER BY random() - LIMIT 1 - - - 4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder Benutzer - in der Datenbank definiert sind? Wie bekomme ich die von psql verwendeten - Abfragen? - - In psql zeigt der Befehl \dt eine Liste der Datenbanktabellen. Weitere - psql-Befehle lassen sich mit \? anzeigen. Sie können sich die Datei - pgsql/src/bin/psql/describe.c mit dem Quellcode für psql ansehen. Sie - enthält die SQL-Abfragen, die die Backslash-Kommandos (\) ausführen. - Sie können psql auch mit der -E Option starten. Danach gibt psql die - Abfragen aus, die es bei der Ausführung der Befehle benutzt. Außerdem - biete PostgreSQL ein SQL-kompatibles INFORMATION SCHEMA, das - Metainformation über die Datenbank zur Verfügung stellt. - - Mit psql -l können Sie alle Datenbanken anzeigen lassen. - - Die Datei pgsql/src/tutorial/syscat.source enthält außerdem viele - SELECT- Abfragen, mit deren Hilfe man Information über die - Systemtabellen erhalten kann. - - 4.3) Wie ändere ich den Datentyp einer Spalte? - - Ab Version 8.0 kann der Datentyp einer Spalte mit ALTER TABLE ALTER - COLUMN TYPE geändert werden, sofern der neue Datentyp die Werte des - alten Datentype aufnehmen kann. - - Bei früheren Versionen gehen Sie wie folgt vor: - BEGIN; - ALTER TABLE tabelle ADD COLUMN neue_spalte neuer_datentyp; - UPDATE tabelle SET neue_spalte = CAST(alte_spalte AS neuer_datentyp); - ALTER TABLE tabelle DROP COLUMN alte_spalte; - COMMIT; - - - Um den Speicherplatz freizugeben, der von der gelöschten Spalte - verwendet wurde, führen Sie VACUUM FULL aus. - - 4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank? - - Es bestehen folgende Obergrenzen: - Maximale Größe eine Datenbank? unbeschränkt (es existieren - Datenbanken mit 32 TB) - Maximale Größe einer Tabelle? 32 TB - Maximale Größe einer Zeile? 400 GB - Maximale Größe einer Spalte? 1 GB - Maximale Anzahl von Zeilen in einer Tabelle? - unbeschränkt - Maximale Anzahl von Spalten in einer Tabelle? - 250-1600 je nach Spaltentyp - Maximale Anzahl von Indexen für eine Tabelle? - unbeschränkt - - Selbstverständlich sind dies theoretische Werte, die oft durch die - verfügbaren Platten- und Speicherressourcen beschränkt werden. Extreme - Größen können zu Leistungseinbußen führen. - - Die maximale Tabellengröße von 32 TB benötigt keine - Large-File-Unterstützung im Betriebssystem. Große Tabellen werden in - Dateien mit einer Größe von je 1 GB aufgeteilt, wodurch etwaige - dateisystem-bedingte Beschränkungen nicht relevant sind. - - Die maximale Tabellengröße und die maximale Anzahl von Spalten können - vervierfacht werden, indem man die Default-Blockgröße auf 32 KB - heraufsetzt. Die Tabellengröße kann auch durch Tabellenpartitionierung - vergrößert werden. - - Eine Einschränkung ist, dass Indexe nur auf Spalten erstellt werden - können, die bis etwa 2.000 Zeichen groß sind. Um auf größere Spalten - eine UNIQUE-Constraint setzen zu können, nutzen Sie einen funktionalen - Index mit dem MD5-Hash-Wert der Spalte. Um innerhalb einer großen, mit - Text belegten Spalte suchen zu können, verwenden Sie einen - Volltext-Index. - - 4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer typischen - Textdatei abzuspeichern? - - Eine PostgreSQL-Datenbank kann beim Abspeichern einer einfachen - Textdatei bis zu fünfmal mehr Platz gegenüber der eigentlichen Größe - der Datei beanspruchen. - - Betrachten wir eine Datei mit 100.000 Zeilen mit einem Integer und - einer Textbeschreibung pro Zeile. Gehen wir davon aus, dass die - durchschnittliche Länge der Textbeschreibung 20 Byte beträgt. Die - einfache Datei würde 2,8 MB groß sein. Die Größe der - PostgreSQL-Datenbankdatei, die diese Daten enthält, liegt ungefähr bei - 5,2 MB: - 24 Bytes: jeder Zeilenkopf (ungefähr) - +24 Bytes: ein Integer-Feld und ein Textfeld - + 4 Bytes: Zeiger auf der Datenseite auf den Tupel - ----------------------------------------------- - 52 Bytes pro Zeile - - Die Größe einer Datenseite in PostgreSQL beträgt 8192 Bytes (8 KB), - also: - 8192 Bytes pro Seite - --------------------- = 146 Zeilen pro Seite (abgerundet) - 52 Bytes pro Zeile - - 100.000 Datenzeilen - ------------------------ = 685 Datenbankseiten (aufgerundet) - 158 Zeilen pro Seite - - 633 Datenbankseiten * 8192 Bytes pro Seite = 5,185,536 bytes (5,2 MB) - - Indexe beanspruchen nicht so viel Platz. Da sie jedoch die Daten - beinhalten, die sie indizieren, können auch sie sehr groß werden. - - NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig - Platz in Anspruch nehmen. - - 4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht. Warum? - - Indexe werden nicht automatisch bei jeder Abfrage verwendet. Indexe - werden nur dann verwendet, wenn die abzufragende Tabelle eine - bestimmte Größe übersteigt, und die Abfrage nur eine kleine - Prozentzahl der Tabellenzeilen abfragt. Der Grund hierfür ist der, - dass die durch einen Index verursachten Festplattenzugriffe manchmal - länger dauern würden als ein einfaches Auslesen aller Tabellenzeilen - (sequentieller Scan). - - Um festzustellen, ob ein Index verwendet werden soll, braucht - PostgreSQL Statistiken über die Tabelle. Diese Statistiken werden - durch die Anweisungen VACUUM ANALYZE bzw. ANALYZE berechnet. Anhand - der Statistiken kennt der Abfragenoptimierer die Anzahl der - Tabellenzeilen und kann besser entscheiden, ob Indexe verwendet werden - sollen. Statistiken sind auch bei der Ermittlung der optimalen - JOIN-Reihenfolgen und -Methoden wertvoll. Daher sollten diese - regelmässig durchgeführt werden, da sich der Inhalt einer Tabelle ja - auch verändert. - - Indexe werden normalerweise nicht in ORDER BY-Abfrage oder in JOINs - verwendet. Ein sequentieller Scan mit anschließendem explizitem - Sortiervorgang ist normalerweise schneller als ein Index-Scan einer - großen Tabelle. Jedoch wird bei einer Abfrage, in der LIMIT zusammen - mit ORDER BY verwendet wird, oftmals ein Index verwendet, da nur ein - kleiner Abschnitt der Tabelle zurückgeliefert wird. - - Sollte es danach aussehen, also ob der Optimierer irrtümlich einen - sequentiellen Scan ausführt, führen Sie SET enable_seqscan TO 'off' - aus und prüfen Sie, ob die Indexabfrage dadurch scheller geworden ist. - - Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, können Indexe - nur unter bestimmten Umständen verwendet werden: - * Das Suchmuster muss sich an Anfang des Strings befinden, d.h.: - + LIKE-Suchmuster dürfen nicht mit % anfangen; - + ~ (reguläre Ausdrücke) müssen mit ^ anfangen. - * Das Suchmuster darf nicht mit einer Zeichenklasse (z.B. [a-e]) - beginnen. - * Suchmuster, die Gross- und Kleinschreibung nicht berücksichtigen - (z.B. ILIKE bzw. ~*), verwenden keine Indexe. Stattdessen können - funktionale Indexe verwendet werden, die im Punkt 4.8 beschrieben - werden. - * Die Standard-Locale "C" muss während der Datenbank-Initialisierung - mit initdb verwendet worden sein, da andere locales den - nächstgrößten Wert nicht ermitteln können. Es ist allerdings - möglich, einen besonderen text_pattern_ops-Index für solche Fälle - zu erstellen. - - In Versionen vor 8.0 werden Indexe oft nicht benutzt, wenn die - jeweiligen Datentypen nicht genau übereinstimmen. Dies gilt besonders - für Indexe auf Spalten mit den Datentypen INT2, INT8 und NUMERIC - - 4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine - Abfrage auswertet? - - Vgl. die EXPLAIN Man-Page. - - 4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei einer - Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? Wie verwende - ich einen Index bei solchen Suchabfragen? - - Der Operator ~ wendet einen regulären Ausdruck an und ~* wendet ihn - an, ohne die Groß- und Kleinschreibung zu beachten. Ebenso beachtet - LIKE die Groß- und Kleinschreibung, und ILIKE nicht. - - Gleichheitsvergleiche, die Groß- und Kleinschreibung ignorieren, - werden in der Regel so ausgedruckt: - SELECT * - FROM tabelle - WHERE LOWER(spalte) = 'abc' - - Hier wird kein normaler Index benutzt. Legt man hingegen einen - funktionalen Index an, so wird er auf jeden Fall verwendet: - CREATE INDEX tabelle_index ON tabelle (LOWER(spalte)) - - Falls der obige Index als einen UNIQUE-Index angelegt wird, können - keine Werte in die Spalte eingefügt werden, die sich nur durch ihre - Groß- und Kleinschreibung unterscheiden. Um Fehler zu vermeiden muß - ein CHECK-Constraint oder ein Trigger eingesetzt werden. - - 4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? Kann nach der - NULL-Belegung sortiert werden? - - Testen Sie die Spalte mit IS NULL bzw. IS NOT NULL. - SELECT * - FROM tabelle - WHERE spalte IS NULL - - Um die Spalte danach zu sortieren, ob sie mit NULL belegt ist oder - nicht, verwenden Sie die Bedingungen IS NULL bzw. IS NOT NULL in der - ORDER BY-Klausel. Da Bedingungen, die wahr sind, höher als das - Gegenteil sortiert werden, bewirkt die folgende Abfrage, dass die - NULL-Spalten zuerst gelistet werden: - SELECT * - FROM tabelle - ORDER BY (spalte IS NOT NULL) - - 4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen? - -Typ interner Name Bemerkungen -------------------------------------------------- -VARCHAR(n) varchar die Größe legt die Maximallänge fest; kein - Auffüllen mit Leerzeichen -CHAR(n) bpchar mit Leerzeichen gefüllt bis zur angegebenen Länge -TEXT text keine obere Schranke für die Länge -BYTEA bytea Bytearray mit variabler Länge (auch für - '\0'-Bytes geeignet) -"char" char 1 Zeichen - - Der interne Name kommt vor allem in den Systemkatalogen und in manchen - Fehlermeldungen vor. - - Die ersten vier Typen sind "varlena"-Typen (d.h. die ersten vier Bytes - geben die Länge an, gefolgt von den Daten). Daher ist der tatsächlich - belegte Platz immer etwas mehr als die deklarierte Feldgröße. - Allerdings wird unter Umständen auf diese Datentypen Datenkompression - durch das TOAST- Verfahren angewendet, womit der tatsächlich belegte - Platz auch geringer als erwartet ausfallen kann. - - Für die Speicherung von Zeichenketten variabler Länge empfiehlt sich - VARCHAR(n). Die maximale Länge eines VARCHAR(n)-Felds wird bei der - Tabellendefinition festgelegt. TEXT setzt keine Längengrenze, - allerdings gibt es eine systembedingte Obergrenze von 1 GB. - - CHAR(n) ist geeignet für die Speicherung von Zeichenketten, die alle - die gleiche Länge haben. Bitte beachten Sie, dass CHAR(n) automatisch - Zeichenketten bis zur definierten Feldlänge mit Leerzeichen ausfüllt, - während bei VARCHAR(n) nur die tatsächlich eingegebene Zeichenkette - gespeichert wird. - - BYTEA ist für binäre Daten, besonders für Werte, die NULL-Bytes haben. - - Alle der hier erwähnten Typen weisen ähnliche Performanzeigenschaften - auf. - - 4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des - Wert? - - PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch - eine Sequenz auf die angegebene Spalte. Zum Beispiel: - CREATE TABLE person ( - id SERIAL, - name TEXT - ) - - wird automatisch in: - CREATE SEQUENCE person_id_seq; - CREATE TABLE person ( - id INT4 NOT NULL DEFAULT nextval('person_id_seq'), - name TEXT - ); - - umgewandelt. - - Die create_sequence Man-Page liefert weitere Informationen über - Sequenzen. - - 4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz? - - Eine Möglichkeit wäre, mit der nextval()-Funktion den nächsten - SERIAL-Wert von dem Sequenzobjekt vor der Auszuführung einer - INSERT-Anweisung anzufordern und ihn dann explizit in die - INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.11.1 - könnte dieser Vorgang in einer Pseudosprache so aussehen: - new_id = output of execute("SELECT nextval('person_id_seq')"); - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); - - Danach stünde der neue Wert in der Variablen new_id für die Verwendung - in weiteren Abfragen zur Verfügung, zum Beispiel als Fremdschlüssel - zur Tabelle 'person'). Bitte beachten Sie, dass der Name des - automatisch erstellten SEQUENCE-Objektes folgenden Name hat: - «table»_«serialcolumn»_seq wobei 'table' und 'serialcolumn' die Namen - der jeweils betreffenden Tabelle / Spalte darstellen. - - Als weitere Möglichkeit können Sie nach einer INSERT-Anweisung den - automatisch eingefügten SERIAL-Wert mit der currval()-Funktion - zurückgeben lassen: - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); - new_id = output of execute("SELECT currval('person_id_seq')"); - - 4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern? - - Nein. currval() liefert einen Wert zurück, der von Ihrer - Datenbank-Session bestimmt wird, und der anderen Sessionen nicht zur - Verfügung steht. - - 4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht - zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner - Sequenz-/SERIAL-Spalte? - - Um die gleichzeitige Abarbeitung von Transaktionen zu verbessern, - werden Sequenzen gerade nicht für andere Transaktionen gesperrt, - sondern die Sequenznummern werden den laufenden Transaktionen sofort - zugeteilt. Lücken in der Sequenznummerierung werden durch abgebrochene - Transaktionen verursacht. - - 4.12) Was ist ein OID? Was ist ein CTID? - - Jede Zeile, die in PostgreSQL erzeugt wird, bekommt eine eindeutige - OID, sofern die Tabelle nicht mit der Option WITHOUT OIDS angelegt - wurde. OIDs sind automatisch zugewiesene 4-Byte-Integer, die innerhalb - der gesamten Datenbank einmalig sind. Allerdings laufen sie bei einem - Wert von ungefähr 4 Milliarden über. PostgreSQL verwendet OIDs, um - seine interne Systemtabellen zu verbinden. - - Um einmalige Idenfikatoren in Datentabellen zu erstellen, wird - allerdings empfohlen, statt OIDs Werte zu verwenden, die vonSERIAL- - Sequenzen erzeugt werden. SERIAL-Sequenzen sind innerhalb einer - Tabelle einmalig und daher weniger anfällig für Überläufe. Außerdem - können 8-Byte-Sequenzwerte mit SERIAL8 erzeugt werden. - - CTIDs werden benutzt, um bestimmte physikalische Zeilen durch Block - und Offset Werte zu identifizieren. CTIDs verändern sich, sobald - Zeilen verändert oder zurückgeladen werden. Sie werden in - Indexeinträgen benutzt um auf die physikalischen Zeilen zu zeigen. - - 4.13) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in - AllocSetAlloc()"? - - Wahrscheinlich gibt es keinen virtuellen Speicher mehr in Ihrem System - oder Ihr Kernel hat niedrige Höchstgrenzen für bestimmte Ressourcen. - Probieren Sie vor dem Start von postmaster folgendes: - ulimit -d 262144 - limit datasize 256m - - Je nach benutzter Shell wird nur einer dieser Befehle erfolgreich - ausgeführt werden. Auf jedem Fall wird die Grenze des Datensegments - für Prozesse erhöht werden und eventuell die erfolgreiche Ausführung - der Abfrage ermöglichen. Falls Sie ein Problem mit dem SQL-CLient - haben, weil das Backend zu viele Daten zurückliefert, versuchen Sie - dies vor dem Start des SQL-Clients. - - 4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir läuft? - - Geben Sie in psql SELECT VERSION(); ein. - - 4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die - aktuelle Uhrzeit enthalten soll? - - Dazu verwenden Sie CURRENT_TIMESTAMP: - CREATE TABLE test (x INT, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); - - 4.16) Wie führe ich eine OUTER JOIN durch? - - PostgreSQL unterstützt OUTER JOINs nach dem SQL- Standardsyntax. Hier - zwei Beispiele: - SELECT * - FROM tabelle_1 t1 - LEFT OUTER JOIN tabelle_2 t2 ON (t1.spalte = t2.spalte) - - bzw.: - SELECT * - FROM tabelle_1 t1 - LEFT OUTER JOIN tabelle_2 t2 USING (spalte) - - Diese identischen Abfragen verknüpfen tabelle_1 mit tabelle_2 über die - Spalte 'spalte' und geben außerdem alle unverknüpften Zeilen in - tabelle_1 (diejenigen, die keine Entsprechung in tabelle_2 haben) - zurück. Ein RIGHT JOIN würde hingegen alle unverknüpften Zeilen in - tabelle_2 hinzufügen und ein FULL JOIN würde alle verknüpften Zeilen - sowie jeweils alle unverknüpften Zeilen aus den beiden Tabellen - zurückliefern. Die Angabe von OUTER ist nicht zwingend und kann in - LEFT, RIGHT und FULL-Verknüpfungen weggelassen werden. Normale - Verknüpfungen sind INNER JOINs. - - 4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen? - - Es gibt keinen Weg, innerhalb einer Abfrage auf mehr als eine - Datenbank zuzugreifen. Da PostgreSQL datenbank-spezifische - Systemkataloge lädt, ist eine datenbankübergreifende Abfrage nicht - möglich. - - contrib/dblink ist eine Erweiterung, die datenbankübergreifende - Abfragen über Funktionsaufrufe ermöglicht. - - 4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion zurückgeben - lassen? - - Funktionen können mehrere Zeilen und Spalten zurückgeben, vgl.: - http://www.postgresql.org/docs/techdocs.17. - - 4.19) Warum bekomme ich eine Fehlermeldung wie "relation with OID ##### does - not exist" wenn ich temporäre Tabellen in PL/PgSQL-Funktionen benutze? - - In PostgreSQL-Versionen vor 8.3 verarbeitet PL/PgSQL Funktionen in - einer Cache. Dies hat eine unangenehme Nebenwirkung, nämlich dass wenn - eine PL/PgSQL-Funktion auf eine temporäre Tabelle zugreift, und diese - Tabelle anschließend gelöscht bzw. neu erstellt wird, die Funktion - fehlschlagen wird, da die gecachten Funktionsinhalte noch auf die alte - temporäre Tabelle zeigen. Die Lösung für diese Probleme besteht darin, - in der PL/PgSQL- Funktion mittels EXECUTE auf temporäre Tabellen - zuzugreifen. Dies bewirkt, dass bei jedem Funktionsruf die betreffende - Abfrage neu geparst wird. - - Dieses Problem taucht in PostgreSQL 8.3 und späteren Versionen nicht - mehr auf. - - 4.20) Welche Replikationslösungen gibt es? - - Der Begriff "replikation" umfasst mehrere verschiedene Technologien, - jede mit eigenen Vor- und Nachteilen. - - Mit "Master/slave"-Replikation werden Änderungen in einer - Hauptdatenbank durchgeführt und an "Sklaven" verteilt, die im - Nur-Lese-Modus arbeiten. Die populärste Lösung für PostgreSQL ist - Slony-I. - - "Multi-master replication" ermöglicht sowohl lesende als auch - schreibende Zugriffe über mehrere Datenbank-Server hinweg. Allerdings - hat diese Art von Replikation eine negative Auswirkung auf die - Performanz durch die Notwendigkeit, Änderungen zwischen Servern zu - synchronisieren. Pgcluster ist die populärste freie Lösung für - PostgreSQL. - - Es gibt auch einige kommerzielle und hardware-basierte - Replikationslösungen für verschiedene Arten der Replikation. - - 4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage nicht - erkannt? Warum werden Großbuchstaben umgewandelt? - - Die häufigste Ursache ist die Verwendung von Gänsefüßchen bei der - Anlegung von Tabellen, z.B.: - CREATE TABLE "Tabelle" - ("SPALTE1" INT) - - Dadurch werden Tabellen- und Spaltennamen (sog. Identifikatoren) in - genau der Schreibweise gespeichert (vgl. Dokumentation), was dazu - führt, dass man sie danach immer in Gänsefüßchen angeben muss. Im - obigen Beispiel muss man also immer etwa SELECT * FROM "Tabelle" - verwenden. Um dieses Problem zu vermeiden, müssen Sie immer eines der - folgenden Punkte beachten: - * bei der Tabellenanlegung keine Gänsefüßchen verwenden; - * in Identifikatoren nur Kleinschreibung verwenden; - * immer Identifikatoren mit Gänsefüßchen versehen - _________________________________________________________________ - - Anmerkungen des Übersetzers - - Die englische Vorlage dieser FAQ wird ständig überarbeitet. Daher - liegt die Übersetzung nicht immer auf dem aktuellsten Stand. - - Die aktuellste Version der deutschen Übersetzung befindet sich immer - unter http://sql-info.de/de/postgresql/FAQ_german.html. Diese - "Arbeitsversion" enthält eventuell Änderungen, die noch nicht auf der - PostgreSQL-Website eingebunden worden sind. - - Über Verbesserungshinweise und Korrekturvorschläge sowie - Verständnisfragen zum Inhalt der FAQ freue ich mich. Ich nehme auch - allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf - die Mailing-Listen als schnelle und zuverlässige Anlaufstellen. |