I've noticed a change in the behaviour in triggers / hstores in Postgres 11.1 when compared to Postgres 10.5.
The following won't work on Postgres 10.5 but in Postgres 11.1 it works just fine:
CREATE EXTENSION hstore;
CREATE TABLE _tmp_test1 (id serial PRIMARY KEY, val INTEGER); CREATE TABLE _tmp_test1_changes (id INTEGER, changes HSTORE);
CREATE FUNCTION test1_trigger () RETURNS TRIGGER LANGUAGE plpgsql AS $BODY$ BEGIN INSERT INTO _tmp_test1_changes (id, changes) VALUES (NEW.id, hstore(OLD) - hstore(NEW)); RETURN NEW; END $BODY$;
CREATE TRIGGER table_update AFTER INSERT OR UPDATE ON _tmp_test1 FOR EACH ROW EXECUTE PROCEDURE test1_trigger();
INSERT INTO _tmp_test1 (val) VALUES (5);
ERROR: record "old" is not assigned yet
DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
From:
"Charles Clavadetscher" Date: Subject:
RE: Potentially undocumented behaviour change in Postgres 11 concerning OLD record in an after insert trigger
Есть вопросы? Напишите нам!
Соглашаюсь с условиями обработки персональных данных
✖
By continuing to browse this website, you agree to the use of cookies. Go to Privacy Policy.