У меня есть таблица с наградами. Как смонтировать триггер в PostgreSQL, где каждая вставка в таблице вознаграждает обновление другой таблицы?
Вставить триггер для обновления другой таблицы с помощью PostgreSQL
Ответ 1
Здесь мы имеем две таблицы с именем table1
и table2
. Используя триггер, я обновляю table2
при вставке в table1
.
Создать таблицы
CREATE TABLE table1
(
id integer NOT NULL,
name character varying,
CONSTRAINT table1_pkey PRIMARY KEY (id)
)
CREATE TABLE table2
(
id integer NOT NULL,
name character varying
)
Функция триггера
CREATE OR REPLACE FUNCTION function_copy() RETURNS TRIGGER AS
$BODY$
BEGIN
INSERT INTO
table2(id,name)
VALUES(new.id,new.name);
RETURN new;
END;
$BODY$
language plpgsql;
Триггер
CREATE TRIGGER trig_copy
AFTER INSERT ON table1
FOR EACH ROW
EXECUTE PROCEDURE function_copy();
Ответ 2
Вы хотите documenation для триггеров PL/PgSQL, в котором обсуждается именно этот случай среди других. Также может быть полезной общая документация для триггеров.
Для этого можно использовать триггер BEFORE
или AFTER
. Я бы использовал триггер AFTER
, чтобы мой триггер видел окончательную версию вставленной строки. Вы хотите FOR EACH ROW
, конечно.
Ответ 3
Нажмите на следующую ссылку, и вы получите ответ.
http://www.postgresql.org/docs/9.4/static/plpgsql-trigger.html