ich habe einen trigger der nach einem insert oder update in eine tabelle ausgelöst wird.
nun möchte ich gerne dem trigger quasi parameter übergeben die nichts mit der tabelle (in die inserted oder updated wurde) zu tun haben.
Beispiel
CREATE TABLE a (
action text
);
CREATE TABLE c (
action text,
actionid bigint,
);
CREATE OR REPLACE FUNCTION trigger_a(
) RETURNS trigger AS
$trigger_a$
BEGIN
INSERT INTO c(action, actionid) VALUES(NEW.action, ???); -- Was soll hier rein ?
RETURN NULL;
END;
$trigger_a$
LANGUAGE plpgsql;
CREATE TRIGGER trigger_a AFTER INSERT OR UPDATE ON a FOR EACH ROW EXECUTE PROCEDURE trigger_a(); -- evtl hier die moeglichkeit parameter zu uebergeben ?
insert into a (action) values('testtext') -- triggert den trigger_a aber wie von hier dem trigger zusaetzliche params uebergeben ?
hmm habe meine antwort nochmal gelesen. es ist noch komplizierter und würde extrem lange dauern alles nierderzuschreiben.
darum die Grundfrage nochmal anders.
kann man triggern einen externen parameter mitgeben oder nicht ?
im endeffekt soll von außen noch eine nummer mitgegeben werden. diese nummer bestimmt der client und die nummer soll nicht in tabelle a sondern nur in tabelle c landen (zusammen mit den infos aus tabelle a)
Wie willst Du einem insert into … diesen Parameter mitgeben?
im endeffekt soll von außen noch eine nummer mitgegeben werden. diese nummer bestimmt der client und die nummer soll nicht in tabelle a sondern nur in tabelle c landen (zusammen mit den infos aus tabelle a)
Eine Funktion, die mit den Werten für beide Tabellen aufgerufen wird und den Rest macht?
Dein Trigger ist FOR EACH ROW. Ich schätze mal, da ist kein Weg, bei einem Insert von N Rows auch so viele dynamische Variablen mitzugeben. Macht auch alles irknwie keinen Sinn. Eine Alternative nannte ich. Irgendwie mußt Du ja die Inhalte angeben, die zu speichern sind.
du kannst für eine triggerfunktion parameter definieren
du kannst bei der verwendung der triggerfunktion in einem konkreten trigger (per CREATE TRIGGER) den parametern argumente mitgeben - also statisch bei Definition
du kannst diese parameter aber nicht mit dem INSERT, der den Trigger auslöst veraendern