|
|
 | | From: | KÖPFERL_Robert | | Subject: | Inserting or Deleting conditionally | | Date: | Mon, 17 Jan 2005 16:25:59 +0100 |
|
|
 | Hi,
coming from imperative programming paradigma, I'm currently trying to express something like that in _SQL_:
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
LANGUAGE SQL;
How is this correctly formulated? Or is there no other way than PL/xxx?
Thanks
---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@postgresql.org so that your message can get through to the mailing list cleanly
|
|
 | | From: | Richard Huxton | | Subject: | Re: Inserting or Deleting conditionally | | Date: | Mon, 17 Jan 2005 16:02:46 +0000 |
|
|
 | 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
---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
|
|
|