任务
改造现有应用程序以使用多租户方法。应该可以创建租户,并且每个用户的会话应该准确引用一个活动租户。每个租户应该只能看到和更新他的数据库模式分区。
方法
- 创建一个包含租户 ID 的 Oracle 应用程序上下文
- 将租户 id 列添加到应限定范围的任何表中
- 创建一个谓词函数,为 SELECT、INSERT、UPDATE 和删除返回 "tenant_id = sys_context('tenant_context', 'tenant_id')"
- 通过 dbms_rls 添加适当的策略来注册谓词函数
这就像一个魅力,而无需触及 SELECT、UPDATE 和 DELETE 的现有应用程序
问题
插入tenant_id 列时未设置并且出现安全异常。有什么方法可以像谓词函数一样流畅地始终设置安全相关字段?我宁愿不向 300 多个表添加触发器。