Subselects in Triggers möglich?

Hallo, ich bin ein totaler Neuling was Trigger und ähnliches angeht.

Darum meine Frage: Kann ich innerhalb von Triggern Subselects verwenden?
z.b:

insert into xy(a,b,c) VALUES (new.a, new.b, SELECT d FROM foo)

Also das ist ja erst mal kein Trigger sondern ein reiner Insert. Und an sich kannst du dort auch einen Subselect verwenden, wenn du ihn in Klammern kapselst. Der Subselect darf allerdings nur ein einziges Ergebnis zurückliefern.

Ja, ich weiß. Ich hab nur den Code der Query reingepastet. Aber danke für den Hinweis mit den Klammern :slight_smile:

schreibs in plpgsql, dann kannst du zwischenspeichern etc…

wieso soll er das in plpqsql schreiben? das ist ein normaler stinkprimitiver insert ohne irgendwelchen großen extras. das kann er überall einfügen und abschicken…

dafür ne riesen funktion schreiben ist imo unnötiger overhead…

cu tb.

logisch hast recht, mein aw war aber auch nur ein hinweis darauf, das trigger nicht nur reines sql enthalten duerfen und vielleicht wird sein trigger ja noch komplexer. schliesslich muss es nicht sein, das man kryptischen code entwickeln die keine sau mehr versteht.

also wenn das wirklich nur dieser insert ist, biddarschoen

Hallo Xandrian,

Beim genauen hinschauen hättest Du dieses nicht geschrieben. Wie lautete Die Frage?

Das funktioniert nicht so, weil “SELECT d FROM foo” eine Tabelle zurück liefert und für VALUES nur ein einzelner Wert eingesetzt werden kann. Einen einzelnen Wert kann ich aber nur durch eine Funktion erhalten.

Wenn nun der “stinkprimitiver insert” ohne eine Funktion auskommt oder nicht als plpqsql-Funktion geschrieben werden muss, also ohne den unnötiger Overhead, dann beschreib hier mal Deinen Lösungsweg!



mfg

fristo

ok, asche auf mein haupt. hab das mit dem trigger überlesen…

davon abgesehen würde das aber auch in einem trigger/funktion mit DIESEN insert/select nicht gehen. auch hier müsste er entweder mit WHERE einschränken auf einen datensatz oder das anderweitig (z.b. schleife mit cursor) machen…

cu tb.