Re: a union is always a join!
Date: Tue, 17 Mar 2009 13:35:32 GMT
Message-ID: <EGNvl.685$SU3.443_at_nwrddc02.gnilink.net>
"Brian Selzer" <brian_at_selzer-software.com> wrote in message
news:c4Fvl.26433$ZP4.2289_at_nlpi067.nbdc.sbc.com...
>
> As an exercise, try to write a set-based update trigger (a statement
> trigger in Oracle) on a table with only a composite natural key. You'll
> find that when a column in the key may be the target of an update, that
> you can't just join deleted to inserted (old to new in Oracle) to
> determine exactly what is different. (That's one of the main reasons
> Oracle and many other implementations support row triggers.)
>
>
Foreign keys are immutable during the period of time that they refer to the same thing, for the same reason that entity keys are immutable. It follows that foreign keys should not have to be updated as a cascade from the update of the entity keys they refer to. An update to a foreign key that represents negation of the old relationship and assertion of a new one ought to be expressble as a delete followed by an insert. I could be wrong on this, as I haven't completed the exercise you proposed.
The tables I have built with only composite natural keys have all been relationship tables, and not entity tables. In these cases, the composite key that identifies rows in the relationship table are also foreign keys that reference entities.