У меня есть два действия, которые нужно выполнить в postgres SQL.б) при изменении действительной таблицы обновите измененный столбец с текущей отметкой даты и времени.
Мне удалось выполнить обе задачи, используя два отдельных триггера, но, как мы знаем, этот триггер увеличивает нагрузку на производительность, поэтому ищем решениедля управления обеими этими задачами внутри одной функции, которую можно вызывать с помощью одного триггера.
До сих пор я создал две функции и два отдельных триггера для достижения своих целей, но не очень доволен процессом, поэтому нужна некоторая помощь
для задачи (а) это то, что я сделал до сих пор, и она отлично работает:
CREATE TRIGGER <trigger_name> AFTER UPDATE
ON <table_name> FOR EACH ROW
EXECUTE PROCEDURE <procedure_name>();
CREATE OR REPLACE FUNCTION <procedure_name>()
RETURNS trigger
LANGUAGE plpgsql
AS
BEGIN
insert into <history_table_name>(column1, column2, .......)values(old.column1,old.column2, .......);
RETURN old;
END;
для задачи (б) это то, что я сделал до сих пор, и она отлично работает:
CREATE TRIGGER <trigger_name> BEFORE UPDATE
ON <table_name> FOR EACH ROW
EXECUTE PROCEDURE <procedure_name>();
CREATE OR REPLACE FUNCTION <procedure_name>()
RETURNS trigger
LANGUAGE plpgsql
AS
BEGIN
new.recordmodifiedon = now();
RETURN new;
END;
Я могу достичь желаемого результата, используя две вышеупомянутые функции, но хочу объединить их в одну функцию, чтобы только один триггерный вызов мог выполнить обе.