У меня есть эта функция, построенная с использованием PostgreSQL:
CREATE OR REPLACE FUNCTION "db"."t_pencabutan_likuidasi_after_update"()
RETURNS "pg_catalog"."trigger" AS $BODY$
BEGIN
IF(NEW.status <> OLD.status) THEN
INSERT INTO
t_pencabutan_likuidasi_log(id_pencabutan, id_profile, nama_petugas, nip_petugas, status, catatan)
VALUES(
NEW.id_pencabutan, NEW.id_profile, NEW.nama_petugas, NEW.nip_petugas, NEW.status, NEW.catatan);
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
Выше приведена функция, которая будет запускаться ДО ОБНОВЛЕНИЯ таблицы liquidator
.
Проблема в том, что некоторые из заполнителей в INSERT
не были вставлены в обязательном порядке, например nama_petugas
и nip_petugas
, что является временным значением. Иногда это вставлено, но иногда это не так. Выдает ошибку вроде этого:
ERROR: record "new" has no field "nama_petugas"
Как я могу оставить это поле пустым, если нет значений / переменных, которые вставляются для nama_petugas
и nip_petugas
?
Вот моя триггерная функция;
CREATE TRIGGER
"t_pencabutan_likuidasi_after_update"
AFTER UPDATE OF "status"
ON "db"."liquidator"
FOR EACH ROW
EXECUTE PROCEDURE
"db"."t_pencabutan_likuidasi_after_update"();