Выберите с помощью настроек безопасности уровня строки

Я пытаюсь добавить select в рамках проверки разрешений для политики безопасности на уровне строк postgres.

У меня есть 2 таблицы, чтобы заботиться здесь 1) группа 2) group_member

  • group - имеет group_id и person_id (это человек, который создал группу)
  • group_member - имеет group_id и person_id

То, что я хочу выразить, - это возможность для владельца группы ударить group_member или для group_member, чтобы уйти самостоятельно.

Вот моя политика:

CREATE POLICY delete_group_member ON public.group FOR DELETE TO hatch_contributor USING (
      person_id = current_setting('jwt.claims.person_id')::integer or
      EXISTS (
        SELECT * FROM group WHERE group.id = group_id AND group.person_id = current_setting('jwt.claims.person_id')::integer)
      ));

Тем не менее, я получаю следующую ошибку - syntax error at or near "group"

Я подозреваю, что Postgres не понимает, где group_id идет от. Может быть смущен group в общем в этом случае. У меня вопрос, что мне здесь не хватает? Как я могу заставить это работать.

1 ответ

Решение

GROUP это ключевое слово в SQL. Не используйте это для имени таблицы. Если вы должны использовать его, вы должны процитировать его, например,

ON public."group"

а также

WHERE "group".id
Другие вопросы по тегам