首页 > 解决方案 > PostgreSQL - 声明变量并多次更改其值

问题描述

来自 MySQL 和 T-SQL 的我,无法从文档(0 个真实示例)和 stackoverflow(0 个真实示例)中弄清楚如何处理 PostgreSQL 中最基本的变量管理,这是一场灾难。

下面的代码会导致错误ERROR: duplicate declaration...

declare invalidThirdUser boolean := 'false';
    
invalidThirdUser = (select 'true' where NEW.sender_id not in(
    select user1_id from thread where id = NEW.thread_id
    union all
    select user2_id from thread where id = NEW.thread_id
));

我试过了

invalidThirdUser = (select...

invalidThirdUser := (select...

set invalidThirdUser = (select...

select invalidThirdUser = (select...

在 postgres 中为变量分配新值有多痛苦?谢谢。

标签: postgresqlvariables

解决方案


这是一个很简单的例子,如何处理PostgreSQL中最基本的变量管理:

do $$
declare
    invalidThirdUser boolean DEFAULT FALSE;
begin
    RAISE NOTICE '%', invalidThirdUser; -- check variable's current value
    
    invalidThirdUser := TRUE; -- set new value  
    RAISE NOTICE '%', invalidThirdUser; -- check variable's current value
    
    SELECT FALSE INTO invalidThirdUser; -- set new value  again, but using SELECT..INTO way
    RAISE NOTICE '%', invalidThirdUser; -- check variable's current value

end; $$ language plpgsql

推荐阅读