> -----Original Message-----
> From: Jared Williams [mailto:[email protected]] 
> Sent: 31 March 2010 16:25
> To: 'Ralph Schindler'; 'Guillaume ORIOL'
> Cc: [email protected]
> Subject: RE: [fw-general] recurse on cascade delete
> 
>  
> 
> > -----Original Message-----
> > From: Ralph Schindler [mailto:[email protected]]
> > Sent: 30 March 2010 06:00
> > To: Guillaume ORIOL
> > Cc: [email protected]
> > Subject: Re: [fw-general] recurse on cascade delete
> > 
> > 
> > 
> > Guillaume ORIOL wrote:
> > > Thank you for your advice.
> > > 
> > > I am using MySQL 5 with InnoDB engine which implements
> > cascade deletes
> > > as well as triggers.
> > > I have to confess I am not very comfortable with triggers. And
the
> 
> > > logic behind the cascade delete is fairly complex in my
> > application. 
> > > Therefore I tried to implement it with php code and ZF. 
> > Now, I know I
> > > have to learn more about triggers...
> > 
> > This is the best place to put database specific business rules, 
> > especially if you don't see yourself needing database platform 
> > independent code.  One of the things to keep in mind when you
start 
> > implementing your business logic in the database itself is that
now 
> > you'll have two codebases you need to also maintain.. the 
> application 
> > code, and also the database code.
> > 
> > That brings me to the point below...
> > 
> > > But let me ask one question: as a full implementation is
> > not possible
> > > (or at least very complex), why not to remove it completely from

> > > Zend_Db? I find it inconsistent as it is.
> > > 
> > 
> > ... see below ...
> > 
> > >>
> > >> The reasons to use MyISAM are dwindling. It used to be faster
> than 
> > >> InnoDB, but this is less and less true now that the performance
> of 
> > >> the InnoDB plugin storage engine has improved so much. If
> > you want to
> > >> use the FULLTEXT index which only supports MyISAM, other
> > options like
> > >> Solr and Sphinx are available and probably better.
> > 
> > While I whole-heartedly agree, MyISAM still has critical 
> mass when it 
> > comes to marriage of Mysql+PHP.  In fact, some people STILL use
the 
> > mysql_ set of functions.
> > 
> > That said, even though database platforms are catching up when it 
> > comes to features that enhance the ability to write 
> business specific 
> > rules, we still have a very popular lowest common 
> denominator.  And if 
> > database platform independent code is a goal of yours, then 
> relying on 
> > FK constraints and triggers might not be an option.
> > 
> > In this case, I think this feature-set is pretty important.  
> > This is why I supplied a patch that I had hoped more people 
> would have 
> > looked at.
> > If it meets community standards, I'd be OK with this going 
> into ZF.  
> > In the mean time, you are free to apply this patch and/or extends 
> > Zend_Db to fulfill this need.
> > 
> 
> I don't think it is possible to implement a robust cascading delete
in
> an
> application without transaction support. (eg MyISAM)
> 
> You need a transaction to ensure either all the delete statements
run,
> or none of them.
> 

Actually this is not quite accurate, as I forgot about MySQL's multi
table delete.

For certain scenarios (MyISAM only) I think you could construct a
single multi table delete statement,
which would perform the cascade.

Jared












 

Reply via email to