Я получил запрос на реализацию привилегий на уровне столбца, например:
GRANT UPDATE("column1") ON "TABLE" TO ROLE;
Но я обнаружил, что клиентские приложения (в Delphi + ODAC) всегда выпускают обновления SQL, такие как:
update TABLE set column1=:column1,column2=:column2,column3=:column3,...etc
where id_c=:id_c;
что заставляет Oracle всегда выдавать ORA-01031: недостаточные привилегии , даже если был изменен только column1. Очевидное решение состоит в том, чтобы изменить клиентское приложение так, чтобы оно генерировало обновления SQL только с измененными столбцами, но это выглядит как довольно много кодирования.
Возможно ли более элегантное решение?
Редактировать: Я забыл упомянуть, что в моих источниках Delphi есть большое количество жестко запрограммированных запросов на вставку / обновление. ODAC не может помочь в этом случае.