|
Возможно ли обновлять строки, защищенные Row Level Security, не будучи superuser?
|
|||
---|---|---|---|
#18+
Я пытаюсь обновлять значения в таблице, строки которой защищены политиками row level security (делать soft delete). Однако, при обновлении получаю ошибку: Query Statusnew row violates row-level security policy for table "my_table". По сути, мне нужно производить удаление строк (soft delete) путем обновления поля deleted . И при этом мне нужно, чтобы current_user (который еще и owner таблицы, но не superuser) не видел строки, у которых флаг deleted установлен в true . Вот, как я задаю row level security: Код: plsql 1. 2. 3. 4. 5. 6. 7.
И вот так пытаюсь обновить строку: Код: plsql 1.
__________ Возможно ли это вообще реализовать? Если да, то что я делаю не так и что нужно исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2021, 20:57 |
|
Возможно ли обновлять строки, защищенные Row Level Security, не будучи superuser?
|
|||
---|---|---|---|
#18+
Denis Yakovenko, дока Typically an UPDATE command also needs to read data from columns in the relation being updated (e.g., in a WHERE clause or a RETURNING clause, or in an expression on the right hand side of the SET clause ). In this case, SELECT rights are also required on the relation being updated, and the appropriate SELECT or ALL policies will be applied in addition to the UPDATE policies. Thus the user must have access to the row(s) being updated through a SELECT or ALL policy in addition to being granted permission to update the row(s) via an UPDATE or ALL policy. Скорее всего Вам нужно как-то пересмотреть ваши роли и ввести роль, которой будет разрешено видеть и менять все данные. Потому что select_only to public перекрывает вам всякий доступ к deleted=true Либо ввести роль, которая будет видеть только не удаленные данные. А вообще, задача видимости данных не решается через RLS. Так в принципе неправильно делать. Заведите отдельную табличку для удаленных данных. И переносите туда. Введите регламентные процедуры как восстанавливать удаленные данные, если такое требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2021, 08:52 |
|
|
start [/forum/topic.php?fid=53&fpage=7&tid=1993868]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 123ms |
0 / 0 |