knowledge-database (beta)

Current group: pgsql.sql

Inserting or Deleting conditionally

Inserting or Deleting conditionally  
KÖPFERL_Robert
 Re: Inserting or Deleting conditionally  
Richard Huxton
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)
   

Copyright © 2006 knowledge-database   -   All rights reserved