Re: Phantom Inserts

From: Bruce Horrocks <bh_at_granby.demon.co.uk>
Date: Sat, 25 Feb 1995 19:28:37 +0000
Message-ID: <793740517snz_at_granby.demon.co.uk>


In article <3ikkjp$qi6_at_jac.zko.dec.com>

           feenan_at_nova.enet.dec.com "Jay Feenan" writes:

>
>In article <793588545snz_at_granby.demon.co.uk>, bh_at_granby.demon.co.uk (Bruce
> Horrocks) writes...
>>
>>Funny how both the responses form Oracle personnel mentioned Rdb
>>rather than (original) Oracle.
>
>Since the original posting was in the comp.databases.rdb newsgroup and we
>tend to follow it closely...

I didn't intend this to become a big issue, its just that the original was posted to both c.d.rdb _and_ c.d.oracle but only the Rdb people responded.

[snip]

>>>BTW, how important is the protection against phantom inserts anyway?
>>>It doesn't seem common in applications that I have seen.
>>
>>I don't think that I've ever had to worry about it in any application
>>that I've written. Doing the same select twice in a row in the same
>>transaction would be so obviously inefficient that I would try to
>>design around it as a matter of course.
>
>But phantom protection is in this tread has been shown
>in its most primitive form...of really pairing a select and either an
>insert/update or select together. When a database engine supports other
>features that the industry requires such as referential integrity it becomes
>much more complex [but can always be broken down to the primitives presented].

You contradict yourself: yes the example was simple but, as you say, more complex cases can still be resolved into the primitives presented. Which means that my point applies: an "unnecesary" select is still being performed. In your defence though I would say that spotting such statements is not easy but then if it were I would be out of a job.

>The fact of the matter is, when a database engine supports referential, the
>many applications that you have developed would have no clue of this
>requirement. The bottom line is that although your statement and mind set is
>true for the applications that you've developed...phantom prevention can be a
>requirement for the database that you run your application against, but you
>never see it.

I agree absolutely: if the requirement to prevent phantoms is introduced by the database itself then the database should be responsible for preventing them. However I don't think the orignal poster had (declarative, I presume) referential integrity in mind when posing the original question.

Regards,

-- 
-------------------------------------------------------------------------------
Bruce Horrocks
Hampshire, England                   Object Oriented programmers only
                                     need two methods - Create and Scoop-Up
bh_at_granby.demon.co.uk
-------------------------------------------------------------------------------
Received on Sat Feb 25 1995 - 20:28:37 CET

Original text of this message