Subject RE: [Firebird-Architect] REPLACE, again
Author Leyne, Sean
Adriano,

> Last time we discussed REPLACE if fb-devel, one user suggested another
> syntax that's looking better for me:
> REPLACE INTO <table> [(<field_list>)] VALUES (<value_list>)
MATCHING
> (<field_list>) [RETURNING <value_list>]
>
> This syntax make the statement not dependent on a PK and hence it
could
> update more than one row.
> It will be usable with views too.
>
> Not depending on a PK, it could be implemented in DSQL with existing
BLR
> verbs, equivalent to:
> update ....
> if (row_count = 0) then
> insert ...
>
> As we don't support RETURNING more than one row yet, the generated RSE
> of the update will be a singleton (only when RETURNING is used?).

On one hand you talk about updating multiple rows, but you then say the
statement could only RETURNING a single row!

It looks like elegant syntax looking for an excuse to exist -- I don't
see what problem this statement is going to be usefull in solving.


I thought the problem that REPLACE was intended to solve, is where you
want to insert a new record but if it already exists, to update the
existing row. As such, the insert must be performed before the update.


Sean