Hi @ all,
eine meiner Tabellen enthält zwei Check-constraints, die je eine Funktion aufrufen:
ALTER TABLE table ADD CONSTRAINT verify_homa_ir CHECK (verify_homa_ir(homa_ir, id));
und
ALTER TABLE table ADD CONSTRAINT verify_homa_proz_b CHECK (verify_homa_proz_b(homa_proz_b, id));
Die zugehörige Funktion des ersten Check:
CREATE OR REPLACE FUNCTION verify_homa_ir(numeric, integer)
RETURNS boolean AS
$BODY$
declare
homa_given alias for $1;
given_checkup_id alias for $2;
homa_calc table.homa_ir%TYPE;
begin
homa_calc := (blablabla);
if
homa_calc = homa_given or homa_given is null
then
return true;
else
return false;
end if;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION verify_homa_ir(numeric, integer) OWNER TO owner_one;
Die zweite Funktion sieht quasi genauso aus.
Ich habe einen Dump erstellt mittels
/usr/bin/pg_dump -i -h localhost -p 5432 -U owner_one -F c -b -f my_backup my_db
und dies ist der anschließende Restorebefehl (Datenbank vorher gelöscht):
pg_restore -C -d postgres Desktop/my_db
Die Datenbank wird zwar wiederhergestellt, ist aber leer. Ich bekomme eine Reihe von Fehlern aufgrund fehlender Fremdschlüssel, die alle auf diesen Fehler folgen:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 1861; 0 17032 TABLE DATA table owner_one
pg_restore: [archiver (db)] COPY failed: ERROR: new row for relation "table" violates check constraint "verify_homa_ir"
CONTEXT: COPY table, line 20: "<Zeileninhalt>"
Ich kann beide Checks löschen, neu dumpen und alles ist gut. Die Zeile, die den Fehler ausgelöst hat, ist ebenfalls ok, widerspricht dem Constraint also nicht.
Jemand ne Idee, wie ich auch mit constraints dumpen und wiederherstellen kann?
Postgresversion 8.2.4
Thx.