PostgreSQL删除行报错需设置用户名,求正确查询写法
解决PostgreSQL删除行的权限问题
首先修正你SQL语句的笔误:把WERE改成WHERE,这是基础语法错误。
针对错误提示要求设置myvars.app_user的问题,你需要让触发器函数trig_fct识别到具备权限的用户,以下两种方式都可以满足要求:
方法一:先设置会话变量再执行删除
-- 先指定有权限的用户,比如Admin SET myvars.app_user = 'Admin'; -- 执行修正后的删除语句 DELETE FROM table WHERE id = id_number;
方法二:单条语句内完成变量设置与删除
如果想在单条语句里实现,可以通过set_config函数直接传递用户信息:
DELETE FROM table WHERE id = id_number AND set_config('myvars.app_user', 'Admin', true) IS NOT NULL;
这里第三个参数true表示该变量设置仅对当前会话生效;若要限定在当前事务内生效,可改为false。
触发器函数trig_fct的逻辑是校验会话中是否存在合法的myvars.app_user值,上述两种方式都能让触发器获取到符合要求的用户标识,从而允许执行删除操作。
内容的提问来源于stack exchange,提问作者onemindwork
相关产品推荐
相关产品推荐

