Ради примера, рассмотрим таблицуPostgres обновить поле даты, когда логическое поле установлено значение истинного
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), чтобы сравнить «затем» с «сейчас». Указатели на примеры кода или фрагменты значительно оценены.
Если у вас уже есть код, было бы легче указать ошибки или завершить его, чем дать вам полное решение с нуля. Поэтому, если можете, опубликуйте его. –