我已经创建了包含client id (e.g 1,2,3)
和DB User name (u1,u2,u3)
的表"clientID_dbUser_mapping"
现在创建另一个表"test_data"
,其中包含id(PK), data(text), client_id(FK)
已为"test_data"
创建RLS策略,以访问相应的已登录db_user数据
以下是政策:
CREATE POLICY client_id_testdata_policy ON test_data
FOR ALL
USING (client_id =
(SELECT client_id
FROM client_dbuser_mapping
WHERE db_user_name = current_user)
)
WITH CHECK (client_id =
(SELECT client_id
FROM client_dbuser_mapping
WHERE db_user_name = current_user)
);
这对于SELECT/UPDATE/DELETE
工作正常
对于INSERT
,我想从"clientID_dbUser_mapping"
表中添加client_id
的默认数据,因为它包含根据db_user_name的客户端ID
那么,我如何通过RLS策略来实现这一点(我是否需要更改现有策略中某些内容)或需要创建新策略?
可能吗?
1条答案
按热度按时间g0czyy6m1#
我不确定我是否正确理解了这个要求,但是如果你想在
INSERT
上强制client_id
为某个值,请使用触发器: