我收到了实现列级权限的请求,例如:
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 无能为力。