私は非常に簡単なトリガとトリガ機能を持っています。トリガ関数は、挿入操作後、すべての行にGUIDを挿入する必要があります。PostgreSQLトリガのmax_stack_depthを実行
SQL:
CREATE TABLE "USERS"
(
id integer,
guid uuid,
name text
)
トリガ機能:
CREATE OR REPLACE FUNCTION insertGUID() RETURNS trigger AS
$BODY$BEGIN
INSERT INTO "USERS" ("guid") VALUES (md5(random()::text || clock_timestamp()::text)::uuid);
END$BODY$
LANGUAGE plpgsql;
トリガー:
CREATE TRIGGER example_trigger BEFORE INSERT ON "USERS" EXECUTE PROCEDURE insertGUID();
しかし後に、すべての挿入後
。同様:INSERT INTO "USERS"(name) VALUES ('foo1');
私はエラーを取得しています:max_stack_depth
CONTEXT: SQL: "INSERT INTO "USERS" ("Joe") VALUES (md5(random()::text || clock_timestamp()::text)::uuid)"
UPD:私はBEFORE INSERT
「BEFORE」でも同じように見えます。http://snag.gy/hyth5.jpg –
私のスクリーンショットは 'before'です。または間違っている?私は再びすべてをチェックしようとします –
@ user1432751:私は、そのスクリーンショットが私に見せてくれるものではないと思います。無限回帰の問題は、それが前トリガか後トリガかに関わらず、何もしません。しかし、列の値を_changing_すると、beforeトリガーでのみ**動作します。 –