Hi, ichhab zZ 2 Probleme mit PostgreSQL, Das erste is ich würd gern nen dump der von meiner DB erstellen, als sicherung und solche Sachen eben, und das 2. Problem hab ich mit den REFERENCES, ich hab extra noch ma im Manuel nachgeschaut, ah ich bekomme die irgendwie net realisiert, ich bekomme immer ne fehlermeldung.
Das soll zb ne anweisung sein:
CREATE TABLE verwarnungen (
ID serial NOT NULL,
FK_wer integer REFERENCES user (ID) ON DELETE CASCADE ON UPDATE CASCADE,
FK_von integer REFERENCES user (ID) ON DELETE RESTRICT ON UPDATE CASCADE,
grund text,
PRIMARY KEY (ID)
);
HAb ich grad nen denkfehler?
Gibts hir echt niemanden, der mir sagen kann, wie ich am dümmsten nen Dump meiner DB ziehe, oder was ich bei der Verwendung der REFERENCES falsch mache?
[code]ERROR: syntax error at or near "user"
LINE 3: FK_wer integer REFERENCES user (ID) ON DELETE CASCADE ON…
^
In der Anweisung:
CREATE TABLE verwarnungen (
ID serial NOT NULL,
FK_wer integer REFERENCES user (ID) ON DELETE CASCADE ON UPDATE CASCADE,
FK_von integer REFERENCES user (ID) ON DELETE RESTRICT ON UPDATE CASCADE,
grund text,
PRIMARY KEY (ID)
);[/code]
Ja die Tabelle existiert.
Hab jetzt ma noch überall nen server. vor jeden tabbelennamen gesetzt. Da komt dann die Fehlermeldung:
[code]ERROR: column “id” referenced in foreign key constraint does not exist
In der Anweisung:
CREATE TABLE server.verwarnungen (
ID serial NOT NULL,
FK_wer integer REFERENCES server.user (ID) ON DELETE CASCADE ON UPDATE CASCADE,
FK_von integer REFERENCES server.user (ID) ON DELETE RESTRICT ON UPDATE CASCADE,
grund text,
PRIMARY KEY (ID)
);[/code]
Tabelle server.user (in ermangelung einer möglichkeit nen dum zu ziehen):
Spalte Datentyp Nicht Null Vorgabe Aktionen Kommentar
ID integer
NOT NULL
nextval('"user_ID_seq"'::regclass) Ändern Löschen
name character varying(25)
Ändern Löschen
passwort character(32)
Ändern Löschen
email character varying(255)
Ändern Löschen
gm integer
Ändern Löschen
anmeldedatum timestamp without time zone
Ändern Löschen
action timestamp without time zone
Ändern Löschen
avatar character varying
Ändern Löschen
signatur text
Ändern Löschen
vorname character varying(25)
NOT NULL
Ändern Löschen
nachname character varying(25)
Ändern Löschen
geburtstag date
Ändern Löschen
sex boolean
Ändern Löschen
land character(2)
Ändern Löschen
homepage character varying(255)
'http://'::character varying Ändern Löschen
me text
Ändern Löschen
Habs hinbekommen, lag mal wieder daran, das Postgres zwar angeblich case insensitive is, ah intern irgendwie doch ganz ungünstig case sensitive arbeitet, und zwar immer mit kleinen Buchstaben.
hab jetzt quasi das ID in der Tabelle in id geändert, und dann gins.
Wer dmir das mit dieser Eigenatt nei merken.
Hab jetzt ah immer noch das Prob, das ich kein Dump ziehen kann, um zB diese änderung auch auf meiner anderen Db einfach zu ändern, sondern imnmer noch jede Tabelle von hand abschreiben müsste (das is mir irgendwie zu viel sinnlose arbeit).
Ah ma noch ne andere Frage, kann mir wer sagen, wie ich das “richtig” ausdrücke?
CREATE TABLE server.verwarnungen (
id serial NOT NULL,
datum timestamp without time zone,
fk_wer integer REFERENCES server.user (id) ON DELETE CASCADE ON UPDATE CASCADE,
fk_von integer REFERENCES server.user (id) ON DELETE RESTRICT ON UPDATE CASCADE CHECK ((SELECT gm FROM server.user WHERE id = fk_von) > (SELECT gm FROM server.user WHERE id = fk_wer)),
grund text,
PRIMARY KEY (ID)
);