2016-10-05 7 views
1
set role qstoolbox; 
update contract set contract_reference = 'ok ok ok' where id = 2 

上記作品 クエリが正常に戻った:影響一つの行、41ミリ秒の実行時間。のPostgreSQL、(行レベルのセキュリティを有する)

set role user_role; 
update contract set contract_reference = ':(:(:(' where id = 2 

この1つは クエリは正常に返されません。影響を受けた0行、31ミリ秒の実行時間を。

enter image description here

権限は、少なくともその私がここで間違ってやってクリアしないで、[OK]を思われます。

行レベルのセキュリティは、これらのポリシー

create policy view_contract on contract for select using(true); 
create policy add_contract on contract for insert to user_role with check(true); 
create policy delete_contract on contract for delete to user_role using(true); 
create policy change_contract on contract for update to user_role with check(true); 

答えて

0

私は私が使用してがありませんでした

create policy change_contract on contract for update to user_role using(true) with check(true);

注(真)

のおかげであることを、このラインで何か

create policy change_contract on contract for update to user_role with check(true);

ニーズがありませんでした[OK]を〜へ私はもっ​​と詳細に文書を勉強させてくれます。

1

とともに

alter table contract enable row level security;

と、このテーブルに追加されたテーブル上の行のセキュリティ・ポリシーまたは無効行のセキュリティを定義します。 the documentationあたり:行のセキュリティは(ALTER TABLEで...行レベルのセキュリティを有効にする)テーブルで有効になっている場合は

、行を選択するか、行を修正するためのテーブルにすべての通常のアクセスが行セキュリティポリシーによって許可されなければなりません。ただし、表の所有者は通常、行セキュリティーポリシーの影響を受けません。表にポリシーが存在しない場合は、デフォルトの拒否ポリシーが使用されます。つまり、行が表示されないか、または変更できません。

+0

私はこれをすでにやっていると思います。質問を更新しました。これはpgadminのスクリーンショットに表示されていると思いますか? – Tim

+1

はい、あなたは 'using()'を作成していました。画像にセキュリティポリシーが表示されません。 – klin

関連する問題