Для примера рассмотрим таблицу
create table foo (
contents text NOT NULL,
is_active boolean NOT NULL DEFAULT false,
dt_active date
)
Я вставляю запись:
insert into foo (contents) values ('bar')
Пока все хорошо. Позже я теперь хочу «активировать» запись:
update foo set is_active = true
То, что я хотел бы сделать, когда is_active
изменяется с false
на true
, для dt_active
установлено на now()
. Для бонусных баллов было бы неплохо, если is_active
было бы изменено с true
на fals
e, для dt_active задано значение null, но я могу жить без этого.
Мне бы очень хотелось перенести эту служебную работу в базу данных, это сделало бы клиентский код намного чище (поскольку многие таблицы (и даже кортежи столбцов в таблицах) могли бы извлечь пользу из этого метода).
Я озадачен тем, как вытащить текущую запись в базе данных в триггере (я использую plpgsql), чтобы сравнить «тогда» с «сейчас». Мы очень ценим указатели на примеры кода или фрагменты кода.