gpt4 book ai didi

postgresql - 如何确保所有 Postgres 查询都有 WHERE 子句?

转载 作者:行者123 更新时间:2023-11-29 12:00:39 25 4
gpt4 key购买 nike

我正在构建一个 Multi-Tenancy 系统,其中许多客户数据将位于同一个数据库中。

我对某些开发人员忘记将适当的“WHERE clientid =”放入每个查询感到疑惑。

有没有办法在数据库级别确保每个查询都具有正确的 WHERE = 子句,从而确保在不指定查询针对哪个客户端的情况下不会执行任何查询?

我想知道查询重写规则是否可以做到这一点,但我不清楚他们是否可以这样做。

谢谢

最佳答案

拒绝所有用户对表 t 的权限。然后授予他们对函数 f 的权限,该函数返回表并接受参数 client_id:

create or replace function f(_client_id integer)
returns setof t as
$$
select *
from t
where client_id = _client_id
$$ language sql
;

select * from f(1);
client_id | v
-----------+---
1 | 2

关于postgresql - 如何确保所有 Postgres 查询都有 WHERE 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15034582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com