Возврат одиночной строки SELECT в триггере ДО ОБНОВЛЕНИЯ - PullRequest
0 голосов
/ 28 ноября 2018

С 41.9.1.Триггеры при изменении данных :

Чтобы изменить строку, подлежащую сохранению, можно заменить отдельные значения непосредственно в NEW и вернуть измененный NEW или построить полноеновая запись / строка для возврата.

Я бы хотел сделать последнее.У меня есть SELECT, который гарантированно вернет одну строку.Как мне это использовать?

1 Ответ

0 голосов
/ 28 ноября 2018

Вот пример:

CREATE TABLE sample (
   id integer PRIMARY KEY,
   sthg text NOT NULL,
   ip inet
);

CREATE FUNCTION sample_trig() RETURNS trigger
   LANGUAGE plpgsql AS
$$BEGIN
   SELECT 42, 'yes!', '127.0.0.1'::inet INTO NEW;
   RETURN NEW;
END;$$;

CREATE TRIGGER sample_trig
   BEFORE INSERT ON sample FOR EACH ROW
   EXECUTE PROCEDURE sample_trig();

INSERT INTO sample VALUES (1, 'new', NULL);

TABLE sample;

 id | sthg |    ip     
----+------+-----------
 42 | yes! | 127.0.0.1
(1 row)
...