Das 'public'-Schema

Ein Schema ist für den praktischen Betrieb von besonderer Bedeutung. Das Schema namens 'public' steht allen zur Verfügung und wird in der Regel zum Anlegen von Tabellen verwendet:

test=# CREATE TABLE t_lied (id serial, name text);
NOTICE:  CREATE TABLE will create implicit sequence 
	"t_lied_id_seq" for serial column "t_lied.id"
CREATE TABLE
test=# SELECT * FROM public.t_lied;
 id | name
----+------
(0 rows)

Wie Sie sehen können, landet die Tabelle im Public-Schema. Darauf sollten Sie sich aber nicht verlassen: Die Variable search_path gibt an, wo Tabellen gesucht respektive gespeichert werden sollen:

test=# SHOW search_path;
 search_path
--------------
 $user,public
(1 row)

Defaultmäßig landet eine Tabelle in einem Schema, das den gleichen Namen wie der Benutzer selbst trägt - nur, wenn dieses Schema nicht vorhanden ist, wird das Public-Schema herangezogen.

Wollen Sie dieses Verhalten für Ihre aktuelle Connection modifizieren, können Sie das Kommando Set verwenden:

test=# \h SET
Command:     SET
Description: change a run-time parameter
Syntax:
SET [ SESSION | LOCAL ] name { TO | = } { value | 'value' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }

Wollen Sie das Verhalten global modifizieren, müssen Sie in postgresql.conf eingreifen aber dazu im Kapitel über Datenbankadministration mehr.




Cybertec Schönig & Schönig GmbH
PostgreSQL support, training, consulting
www.postgresql-support.de