У меня очень простая функция триггера и триггера. Функция триггера должна вставлять GUID в каждую строку после операции вставки.max_stack_depth на запуске триггера PostgreSQL
SQL:
CREATE TABLE "USERS"
(
id integer,
guid uuid,
name text
)
Trigger функция:
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;
Trigger:
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_ значение столбца будет ** только ** работать в перед триггером. –