Postgresql триггеры - PullRequest
0 голосов
/ 13 июля 2010

Можно ли увидеть последнюю запись в таблице, которая была активирована?

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

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

СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ФУНКЦИЮ process_learner_creater () ВОЗВРАЩАЕТ TRIGGER AS $ log $ НАЧАТЬ IF (TG_OP = 'INSERT') THEN INSERT INTO log SELECT ИД пользователя от пользователей; Возврат NULL; END IF; Возврат NULL; КОНЕЦ; $ log $ LANGUAGE plpgsql;

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

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

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

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

1 Ответ

1 голос
/ 13 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...