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 № 1Gemäß 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