plpgsql: PERFORM vs. SELECT INTO (PERFORM not setting FOUND variable?)
От | Marinos Yannikos |
---|---|
Тема | plpgsql: PERFORM vs. SELECT INTO (PERFORM not setting FOUND variable?) |
Дата | |
Msg-id | 417D57B1.8010507@geizhals.at обсуждение исходный текст |
Ответы |
Re: plpgsql: PERFORM vs. SELECT INTO (PERFORM not setting FOUND variable?)
Re: plpgsql: PERFORM vs. SELECT INTO (PERFORM not setting FOUND |
Список | pgsql-sql |
Hi, I'm probably misintepreting the documented equivalence of PERFORM and SELECT INTO as far as the special variable FOUND is concerned, but the following 2 definitions do not seem to produce the same result. create table blup ( t1 text, t2 text ); create function blup_unique2 (text,text) returns boolean as 'begin perform (select 1 from blup where t1=$1 or t1=$2 or t2=$1 or t2=$2 or $1=$2 limit 1); return NOT FOUND; end' LANGUAGE plpgsql; create function blup_unique3 (text,text) returns boolean as 'declare x record; begin select into x 1 from blup where t1=$1 or t1=$2 or t2=$1 or t2=$2 or $1=$2 limit 1; return NOT FOUND; end' LANGUAGE plpgsql; The first will always produce false, i.e. apparently the subquery used by PERFORM will not set the variable FOUND as expected. Is this correct? (btw.: I'm trying a few ways to ensure that all values in both t1 and t2 are unique: alter table blup add constraint check (blup_unique3(t1,t2)); - perhaps there are more elegant ways, any suggestions?) Regards, Marinos
В списке pgsql-sql по дате отправления: