2017-10-06 7 views
0

Je tente d'ajouter un select dans la vérification d'autorisation pour la politique de sécurité au niveau ligne de postgres.Sélectionner avec les paramètres de sécurité au niveau de la ligne

J'ai 2 tables de soins au sujet ici 1) Groupe 2) group_member

  • groupe - a un group_id et person_id (qui est la personne qui a fait le groupe )
  • group_member - a group_id et person_id

Ce que je veux exprimer est la possibilité pour les propriétaires de groupe de donner un coup de pied à un membre du groupe ou à un membre du groupe de partir tout seul.

Voilà ma politique:

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) 
    )); 

Cependant, je reçois l'erreur suivante - syntax error at or near "group"

Je soupçonne que, postgres ne comprend pas où group_id vient. Peut-être est confus à propos de group en général dans ce cas. Ma question est, qu'est-ce qui me manque ici? Comment puis-je obtenir ce travail.

Répondre

2

GROUP est un mot-clé dans SQL. Ne l'utilisez pas pour un nom de table. Si vous devez l'utiliser, vous devez l'indiquer, par ex.

ON public."group" 

et

WHERE "group".id 
+0

Merci cela a fonctionné! – Parris