Re: Is relational theory irrelevant?

From: Mikito Harakiri <mikharakiri_at_iahu.com>
Date: Wed, 19 Nov 2003 09:29:17 -0800
Message-ID: <uVNub.13$OF2.82_at_news.oracle.com>


"Serge Rielau" <srielau_at_ca.eye-bee-m.com> wrote in message news:bpfunr$dic$1_at_hanover.torolab.ibm.com...
> The syntax is as follows:
> SELECT .. FROM OLD TABLE(DELETE FROM ...)
>

> OLD TABLE being the set of deleted rows

May I ask you how is your single statement it different from the following sequence:

SELECT * FROM T;
DELETE FROM T; ?

> For UPDATE you have the choice of OLD TABLE and NEW TABLE (being the set
> of rows as they are updated (after before triggers, etc...).
> Consequently INSERT supports NEW TABLE only.
>
> At this point we limit the usage not to include views.
> This is not because of a problem in the semantics. It's more a problem
> of accepting that views can MODIFY SQL DATA by simply selsecting from
> them. Something the standard (and most users I presume) reserve to
> procedures.
> There are some more limits that we imposed since we are ahead of the
> standard and we need to let it catch up. But those are tactical.

Indeed, it's interesting to see how much abuse standard can tolerate.

> So what you can do is to perform a "relational workflow" where
> intermediate sets are made persistent on disc by side-effect.
> People like Paul like that kind of stuff for data cleansing :-)
> Also you need such concepts in OLTP if you use surrogate keys produced
> by the DBMS (such as sequences).
>
> Example:
> WITH del AS (SELECT * FROM OLD TABLE(DELETE FROM S))
> SELECT count(*) FROM NEW TABLE(INSERT INTO T SELECT * FROM del);

And how is it different from:

INSERT INTO T as
  SELECT * FROM S;
SELECT count(*) FROM S;
DELETE FROM S; I guess "more" orthogonality argument from the flame wars with your competitor is long forgotten. Received on Wed Nov 19 2003 - 18:29:17 CET

Original text of this message