Re: Ueberpruefung von FOREIGN_KEYS abschalten

From: "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "Thomas Steinbach *EXTERN*" <steinbach(at)gmx-topmail(dot)de>, <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Ueberpruefung von FOREIGN_KEYS abschalten
Date: 2008-12-01 10:49:34
Message-ID: D960CB61B694CF459DCFB4B0128514C202D10B30@exadv11.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Thomas Steinbach schrieb:
> gibt es bei PostgreSQL sowas wie ein
>
> "SET FOREIGN_KEY_CHECKS=0;"
>
> wie bei MySQL?
>
> Einfach um beim Importieren auf gewisse
> Reihenfolgen verzichten zu koennen?

Ja, allerdings nur innerhalb gewisser Grenzen.
PostgreSQL wird keine Verletzung von Constraints zulassen.

Wenn ein FOREIGN KEY mit dem Schlüsselwort "DEFERRABLE" angelegt wurde
und keine andere ON DELETE/ON UPDATE-Aktion als den Defaultwert
"NO ACTION" hat, kann man die Überprüfung innerhalb einer Transaktion
bis zum COMMIT verzögern.

Man sagt dazu nach dem BEGIN TRANSACTION:
SET CONSTRAINTS ALL DEFERRED;

Dann muß der gesamte Import innerhalb dieser Transaktion stattfinden,
und wenn nachher alles paßt, wird das COMMIT gut gehen.

Voraussetzung, wie gesagt: Man hat die FOREIGN KEYs mit
DEFERRABLE angelegt und kein ON DELETE CASCADE oder Ähnliches.

Liebe Grüße,
Laurenz Albe

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas 'ads' Scherbaum 2008-12-01 16:00:29 == Wöchentlicher PostgreSQL Newsletter - 30. November 2008 ==
Previous Message Andreas Kretschmer 2008-11-29 08:24:06 Re: Ueberpruefung von FOREIGN_KEYS abschalten