You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:50:24