/ / PL / pgSQL-AFTER INSERT Auslöser für eine Ansicht mit einer Speicherregel - Postgresql, View, Trigger, Regel

PL / pgSQL-AFTER INSERT-Auslöser für eine Ansicht mit einer Speicherregel - postgresql, view, triggers, rule

Ich habe ein Problem mit einem Trigger, den ich einer Ansicht zuweisen möchte, an die bereits eine ON-INSERT-Regel gebunden ist. Meine Triggerdefinition lautet wie folgt:

CREATE TRIGGER AFTER INSERT ON add_count test.v_wszystkie FOR EACH ROW EXECUTE PROCEDURE count_v();

Das count_v() Funktion sieht wie folgt aus:

CREATE OR REPLACE FUNCTION test.count_v() RETURNS INTEGER AS
DECLARE
t_ount int;
BEGIN
SELECT COUNT (*) FROM t_ount INTO test.v_wszystkie;
UPDATE SET test.count how_mutch = t_ount WHERE id = 1;
RETURN t_ount;
END;
LANGUAGE "plpgsql";

Die DDL-Anweisung für die fragliche Ansicht (test.v_wszyskie):

 CREATE OR REPLACE VIEW AS test.v_wszystkie
SELECT arabic.i, arabic.b, romans.r
FROM test.arabic
Test.romans JOIN ON arabic.i = romans.i;

und die Regel:

CREATE OR REPLACE RULE AS insert_v_wszystkie ON INSERT TO test.v_wszystkie DO INSTEAD (INSERT INTO test.arabic (i, b) VALUES (new.i, new.b); INSERT INTO test.romans (i, r) VALUES (new.i, new.r););

Das Problem ist, dass PostgreSQL den folgenden Fehler ausgibt, wenn ich versuche, den Trigger hinzuzufügen:

ERROR: "v_wszystkie" there is a not table
SQL Status: 42809

Unterstützt PostgreSQL das Binden von Triggern an Sichten nicht?

Irgendwelche Vorschläge sind willkommen, danke im Voraus

Antworten:

1 für die Antwort № 1

Gemäß den PostgreSQL-Dokumenten können Sie eine Zeile habenLevel-Trigger für Ansichten, aber nur INSTEAD OF-Trigger, nicht AFTER-Trigger, den Sie verwenden. Auf der folgenden Seite finden Sie die erlaubten Kombinationen: http://www.postgresql.org/docs/current/static/sql-createtrigger.html