2010-07-13 4 views
0

Возможно ли увидеть последнюю запись в таблицу, на которой была запущена?Триггеры Postgresql

Например, у меня есть таблица под названием «пользователи» и таблица с именем «log». Я хочу написать «log» userid, который был в последний раз написан «пользователям», поэтому каждый раз, когда пользователь создается, он записывает идентификатор пользователя в журнал.

создать триггер на пользователей с помощью функции, как показано ниже ...

CREATE OR REPLACE FUNCTION process_learner_creater() возвращает триггер $ войти $ НАЧАТЬ IF (TG_OP = 'INSERT') ТОГДА INSERT INTO log SELECT userid от пользователей; RETURN NULL; END IF; RETURN NULL; END; $ log $ LANGUAGE plpgsql;

Итак, когда вставка обжигают на стол пользователей он возвращает идентификатор пользователя от пользователей, проблема, я не знаю, что был последний пользователь будет добавлен поэтому эта функция не будет работать ...

Есть ли способ сказать ...

INSERT INTO log SELECT <> от пользователей;

Это поле для пользователей будет полем с последовательным полем, поэтому будет автоматически увеличиваться (и не быть частью сценария SQL во вставке, поскольку это было бы автоматически назначено).

ответ

1

Из чего я понимаю, вы хотите использовать переменную NEW, которая содержит новую строку, для которой был вызван триггер (для этого вам не нужно SELECT). Вы посмотрели примеры из документации?

http://www.postgresql.org/docs/8.4/interactive/plpgsql-trigger.html

+0

Прекрасное спасибо :) – david99world