Я устанавливаю триггеры в PostgreSQL, и я не уверен, как сделать определенные случаи. Например, я настроил таблицы фильмов, и некоторые конечные точки изменяют любую часть, чтобы она создавала точную копию, если строка редактировалась до изменения, и сохраняю ее в films_log. А также, если меняются несколько строк, мне нужно, чтобы эти строки тоже регистрировались.
CREATE TABLE films (
id integer PRIMARY KEY,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10)
);
CREATE TABLE films_log (
serial integer,
title varchar(200),
did integer,
date_prod date,
kind varchar(200)
);
CREATE TRIGGER films_logging_trigger
BEFORE UPDATE ON myschema.films
FOR EACH ROW EXECUTE PROCEDURE films_logging();
Что я пробовал:
CREATE OR REPLACE FUNCTION films_logging() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO films_log (id, title, did, date_prod, kind)
SELECT id, title, did, date_prod, kind FROM films WHERE id = OLD.id
END;
$$;