我需要创建一组视图,其中具有选择权限的数据库用户将在其中查询数据,但是我想创建一个通用视图,因此,如果其他用户要查询相同的数据,则无需创建根据他们的“ user_id”获得更多观看次数。一个例子是:
CREATE OR REPLACE VIEW user_data AS SELECT * FROM users JOIN something WHERE user_id = ?
是否有任何方法可以设置,如果查询数据的数据库用户是“ db_user1”,则具有上述选择的视图将使用1
作为user_id
进行查询?并且如果数据库用户是db_user2
,那么where user_id
会被设置为2?
答案 0 :(得分:0)
对于此特定用例,您可以执行以下操作:
create or replace view user_data AS
select * from users
where user_id = (select substring(current_user, length(current_user))::int);
但是,如果用户名不以可以转换为int的名称结尾,则会返回错误。
您可能想了解行级安全性,以寻求更可靠和可配置的功能。