Re: Deferred constraint trigger semantics
От | Bryn Llewellyn |
---|---|
Тема | Re: Deferred constraint trigger semantics |
Дата | |
Msg-id | F7A532E2-5876-4C7F-9F42-4C2C0BE78578@yugabyte.com обсуждение исходный текст |
Ответ на | Re: Deferred constraint trigger semantics (alias <postgres.rocks@gmail.com>) |
Список | pgsql-general |
postgres.rocks@gmail.com wrote:It adds the "initially deferred" decoration to the "create constraint trigger" statement. This is (still) the result:
INFO: trg fired. new.v = 10, n = 5
INFO: trg fired. new.v = 20, n = 5
INFO: trg fired. new.v = 30, n = 5
INFO: trg fired. new.v = 40, n = 5
INFO: trg fired. new.v = 50, n = 5
INFO: trg fired. new.v = 60, n = 8
INFO: trg fired. new.v = 70, n = 8INFO: trg fired. new.v = 80, n = 8Because You can docreate constraint trigger trgafter insert on t2deferrable initially deferredfor each rowexecute function trg_fn();You didn't explicitly defer the trigger trg on t1!. That means after you insert on t1 then the trigger trg on t1 invoked rather than on commit time.If youINFO: 00000: trg fired. new.v = 10, n = 8then you will getcreate constraint trigger trgafter insert on t1deferrable initially deferredfor each rowexecute function trg_fn();create constraint trigger trgafter insert on t2deferrable initially deferredfor each rowexecute function trg_fn();
INFO: 00000: trg fired. new.v = 20, n = 8
INFO: 00000: trg fired. new.v = 30, n = 8
INFO: 00000: trg fired. new.v = 40, n = 8
INFO: 00000: trg fired. new.v = 50, n = 8
INFO: 00000: trg fired. new.v = 60, n = 8
INFO: 00000: trg fired. new.v = 70, n = 8INFO: 00000: trg fired. new.v = 80, n = 8
Er… yes. David Johnston pointed that out too. I'm embarrassed beyond belief. Sorry to have wasted folks' time because of my mistake.
В списке pgsql-general по дате отправления: