Я новичок в PostgreSQL, и я пытаюсь создать триггер для обновления. У меня есть два источника и места для таблиц с одинаковой структурой таблицы. Поэтому я хочу, чтобы записи обновлялись по назначению, когда есть обновление по источнику. Я попытался ниже триггерную функцию:Update trigger on postgresql
Create FUNCTION ins_functiontest() RETURNS trigger AS '
BEGIN
IF tg_op = ''UPDATE'' THEN
INSERT INTO destination(id,name,tg_op)
VALUES (new.id,new.name, tg_op);
RETURN new;
END IF;
END
' LANGUAGE plpgsql;
Column «ID» является первичным ключом на обеих таблицах, поэтому данная функция не может, когда есть обновление на источнике, как запись уже существует в пункт назначения.
Я попытался изменить функцию, чтобы обновить остальную часть столбцов в таблице, сравнивая поля идентификатора источника и адресата.
Update des
Set name = new.name,tg_op= update
From destination des join source src
ON des.id = src.id
Where des.id = src.id
Но не удалось получить синтаксис правильно. Любая помощь будет оценена по достоинству.
Я использую PostgreSQL 8.4.
Для того чтобы функция обрабатывалась как функция триггера, вам необходимо выдать конкретный оператор 'CREATE TRIGGER'. – mic4ael