| From: | Maurice Gittens <mainmanmauricio(at)gmail(dot)com> | 
|---|---|
| To: | pgsql-general(at)postgresql(dot)org | 
| Subject: | Why No WHERE clause for INSERT statements | 
| Date: | 2010-08-17 08:32:12 | 
| Message-ID: | AANLkTimKDDBjAp3FxL4Q=RhJf6LYhQ-ZKF1i=rvs0ark@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
Hi,
the postgresql 8.4 documentation defines the syntax of the DELETE statement as:
DELETE FROM [ ONLY ] table [ [ AS ] alias ]
    [ USING usinglist ]
    [ WHERE condition | WHERE CURRENT OF cursor_name ]
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
The syntax includes a where clause allowing qualified declarative
control over what is deleted.
Why would the same not hold for the insert statement?
More specifically; the INSERT statement is currently defined as:
INSERT INTO table [ ( column [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [,
...] | query }
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
Does not symmetry dictate that the definition of the INSERT statement
be similar to:
INSERT INTO table [ ( column [, ...] ) ]
    [ USING usinglist ]
    [ WHERE condition | WHERE CURRENT OF cursor_name ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [,
...] | query }
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
This syntax would allow tuples to be inserted only when some condition is true.
What I am missing?
Cheers,
Maurice
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Atul.Goel | 2010-08-17 08:53:06 | Re: good exception handling archiecutre | 
| Previous Message | Philippe Lang | 2010-08-17 08:15:37 | Re: Non-reentrant plperlu function & concurrent access |