// Complete auto transaction
$this->_auto_trans_complete('delete');
As far as I can see, this makes sure all relations are deleted first, before the record itself is deleted. From a logic point of view a better solution imho.
Could you try and see if this fixes your problem? If so you can leave the constraints in place.