У меня есть довольно простая таблица, в которой хранятся авторы записей в текстовом поле, как показано здесь:
CREATE TABLE "public"."test_tbl" (
"index" SERIAL,
"testdate" DATE,
"pfr_author" TEXT DEFAULT "current_user"(),
CONSTRAINT "test_tbl_pkey" PRIMARY KEY("index");
Пользователь никогда не увидит поля index или pfr_author, но я бы хотел, чтобы они могли ОБНОВИТЬ поле testdate или УДАЛИТЬ целые записи, если у них есть разрешение и если они являются автором. то есть, если test_tbl.pfr_author = CURRENT_USER THEN разрешают ОБНОВЛЕНИЕ ИЛИ УДАЛЕНИЕ, но если нет, выдают сообщение об ошибке, например «Извините, у вас нет прав на редактирование этой записи.».
Я не пошел по пути использования триггера, так как считаю, что даже если он будет выполнен до обновления строки, запрошенное пользователем обновление все равно будет иметь место впоследствии.
Я пытался сделать это с помощью правила, но в итоге получаю бесконечную рекурсию, когда я помещаю команду обновления внутри правила. Есть ли способ сделать это, используя только правила или комбинацию правила и триггера?
Большое спасибо за любую помощь!