Re: Inserting or Deleting conditionally - Mailing list pgsql-sql

From Richard Huxton
Subject Re: Inserting or Deleting conditionally
Date
Msg-id 41EBE1A6.6050208@archonet.com
Whole thread Raw
In response to Inserting or Deleting conditionally  (KÖPFERL Robert <robert.koepferl@sonorys.at>)
List pgsql-sql
KÖPFERL Robert wrote:
> Hi,
> 
> coming from imperative programming paradigma, I'm currently trying to
> express something like that in _SQL_:

SQL is not an imperative language - each SQL statement is an expression 
to be evaluated.

> It should be atomic and like an API for a user. I'm therefore writing
> functions:
> 
> CRETE FUNC...
> 
> c := SELECT x,y,z FROM table_a WHERE...
> IF COUNT(c)=1 then
>     INSERT / DELETE ... WHERE x = c.x
> ENDIF

Even if this was valid syntax, you've just made your query N times more 
expensive. Try something like:  INSERT ... WHERE x IN (SELECT x FROM table_a WHERE ...)
or similar.

> How is this correctly formulated? Or is there no other way than PL/xxx?

Sounds like you want a middle-ware layer to provide an API for your 
applications. Plenty of options, but it's difficult for people to make 
suggestions without knowing more about your situation.
--  Richard Huxton  Archonet Ltd


pgsql-sql by date:

Previous
From: KÖPFERL Robert
Date:
Subject: Inserting or Deleting conditionally
Next
From: Ari Kahn
Date:
Subject: plpgsql and for with integer loopvar error