Выберите с помощью настроек безопасности уровня строки
Я пытаюсь добавить 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