/ Trigger поменять местами значения при инсерте из разных колонок?
RULE приводит к бесконечной рекурсии, а через Trigger и INSTEAD OF + View как-то не получается
На примере вот этого правила:
CREATE OR REPLACE RULE relationship_status_ids_permute AS ON INSERT
TO relationship_status WHERE NEW.id_2 < NEW.id_1
DO INSTEAD INSERT INTO relationship_status
VALUES (NEW.id_2
NEW.id_1,
NEW.target_id,
NEW.created_at,
NEW.approved_at,
NEW.refused_at);
Заранее огромное спасибо за помощь
Если можно вьюху, то можно так: CREATE TABLE relationship_status (id_1 int not null, id_2 int not null, target_id int, created_at timestamp, approved_at timestamp, refused_at timestamp); create view vw_relationship_status as (select * from relationship_status) CREATE OR REPLACE RULE relationship_status_ids_permute AS ON INSERT TO vw_relationship_status --WHERE NEW.id_2 < NEW.id_1 DO INSTEAD INSERT INTO relationship_status VALUES (LEAST(NEW.id_2,NEW.id_1), GREATEST(NEW.id_2,NEW.id_1), NEW.target_id, NEW.created_at, NEW.approved_at, NEW.refused_at);
1. Лучше никогда не используйте RULES, см. https://wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_rules 2. А почему Вы говорите об INSTEAD OF? Куда у Вас идёт вставка, в таблицу (если да, то используйте BEFORE)?
Обсуждают сегодня