Есть ли способ заставить запрос на обновление установить значение столбца в postgreSQL? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть таблица со столбцом id_user_update, в которой хранится идентификатор пользователя, который вставил / обновил строки. Я создал триггер, который проверяет, имеет ли этот столбец значение NULL, и выдает исключение. Но это работает только для запросов INSERT, потому что в запросах UPDATE, если этот столбец не установлен, используется текущее значение. Другими словами, NEW.id_user_update становится равным OLD.id_user_update, если он не задан в запросе.

Единственное решение, которое я нашел, - это удалить разрешение пользователя на обновление и заставить его использовать функцию. Но это не вариант в этом случае.

Есть идеи?

1 Ответ

0 голосов
/ 28 февраля 2020

Вы бы просто определили триггер ON INSERT OR UPDATE:

CREATE FUNCTION mytrig() RETURNS trigger
   LANGUAGE plpgsql AS
'BEGIN
   NEW.id_user_update = get_current_user();
   RETURN NEW;
END;';

CREATE TRIGGER mytrig BEFORE INSERT OR UPDATE ON atable
   FOR EACH ROW EXECUTE PROCEDURE mytrig();

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

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