In Postgres-Regeln (https://www.postgresql.org/docs/current/static/sql-createrule.html), ist es möglich, Variablen zu verwenden? Wenn zum Beispiel in der Regel mache ichVerwenden von Variablen in Postgres-Regel
CREATE RULE "_RETURN" AS
ON INSERT TO t1
DO INSTEAD
INSERT INTO t1 (id, a) VALUES (uuid_generate_v4(), new.a)
INSERT INTO t4 (id) VALUES (??????)
Kann ich irgendwie den Wert von uuid_generate_v4()
in der ersten INSERT als Variable gesetzt, so dass ich es in der zweiten INSERT verwenden kann? Oder gibt es eine Möglichkeit, die generate ID von der ersten INSERT zu bekommen, damit sie in der zweiten verwendet werden kann?
Auch bekomme ich einen Fehler infinite recursion detected in rules for relation
. Wahrscheinlich, weil die Regel für die Tabelle t1 gilt, aber eine Anweisung enthält, die in t1 eingefügt werden soll. Wie kann ich das schaffen?
Ich würde denken, dass Sie wahrscheinlich eine [CTE] (https://www.postgresql.org/docs/9.1/static/queries-with.html) verwenden könnten, um den Uuid-Wert und die Referenz in der Einfügung zu wählen, obwohl es wahrscheinlich andere Wege gibt. Auch Ihre Rekursion kommt höchstwahrscheinlich von der Tatsache, dass Sie bei jeder Einfügung in "t1" eine Regel erstellen, die eine Einfügung in "t1" durchführt, um die Regel erneut auszulösen. – jcern