Dubletten Trigger

Kann man auch einen Trigger bauen für Dubletten?
Ich kann zwar einen Before Trigger bauen, damit würden aber 2 Dublettenchecks gemacht.

UNIQUE INDEX wurden bereits vor längerer Zeit erfunden.

Andreas

Ok dann habe ich mich falsch ausgedrückt :smiley:

Ich habe eine Funktion die mir x Einträge erzeugt. Auf der Tabelle habe ich einen Trigger der mir einen Primarschlüssel erzeugt aus Zufallszeichen.
Bis jetzt ist es nicht vorgekommen aber ich würde gerne falls ein Constrainfehler auftritt (Dublette in diesem Fall) das Triggern und einfach nochmal den Generator anschmeisen für einen neuen Schlüssel.

Vielleicht hilft Dir das Beispiel für merge_db von PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: Control Structures weiter.

Andreas

Das habe ich bereits gefunden. Aber das würde ich ja in meine CreateList-Funktion bauen. Einzel Inserts sind dann nicht mehr davon betroffen.

Aber das habe ich schon befürchtet. Kann ich den ein ENDLESS Loop bauen mit einem manuellen Break. Hat PL sowas? Habe auf anhiebt erstmal nichts gefunden.

PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: Control Structures

Andreas

PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: Control Structures

zitat:

CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS
$$
BEGIN
    LOOP
       .... gekürzt
        BEGIN
            INSERT INTO db(a,b) VALUES (key, data);
            RETURN;
        EXCEPTION WHEN [color="Blue"]unique_violation[/color] THEN
            -- do nothing, and loop to try the UPDATE again
        END;
    END LOOP;
END;