Bedingter insert oder edit
Autor: Vilma Plum
eingetragen: Dienstag, 09. Dezember 2008 um 09:41 Uhr (50/2008 Kalenderwoche)
geändert: Dienstag, 09. Dezember 2008 um 09:41 Uhr (50/2008 Kalenderwoche)
Kategorien: DB: PostgreSQL,
Text:
Bei zusammengesetzten Primärschlüsseln besteht die Möglichkeit, die Entscheidung darüber, ob ein insert oder ein update auszuführen ist, der DB zu überlassen.
Dazu muss in der DB eine Funktion (Prozedur) definiert werden (die Definition imk Quellcode). Alle benötigten Werte müssen der Funktion übergeben werden.
Diese Funktion wird einfach mit
SELECT Funktion(Werte);
aufgerufen.
Quellcode:
CREATE FUNCTION testifthendata (integer, integer, text)
RETURNS text
AS
'BEGIN
IF (SELECT eins_id, zwei_id FROM test_ifthen WHERE eins_id = $1 AND zwei_id = $2) THEN
UPDATE test_ifthen SET wert = $3 WHERE eins_id = $1 AND zwei_id = $2;
RETURN 0;
ELSE
INSERT INTO test_ifthen (eins_id, zwei_id, wert) VALUES ($1, $2, $3);
RETURN 1;
END IF;
END;'
LANGUAGE 'plpgsql' VOLATILE;