Am 21.03.2008 um 17:43 schrieb Matt S Trout:
On Sat, Mar 08, 2008 at 06:11:22PM +0100, Moritz Onken wrote:
Wouldn't it be great (tm) if we could add an "on_delete" and
"on_update" config
to all the relationships? Like the "cascade_delete" config option.

If the DMBS supports that type of actions DBIC does not have to take
care of it,
otherwise it does.

Seems reasonable, but how well can we abstract it to be non-db- specific?

If we can't, I think just using sqlt_deploy_hook is the answer.


I'd like to push this a little bit because I think it could be really helpful. For now I applied a patch to the current 0.09 trunk which allow to set on_delete and on_update on a relationship. This will not break backwards comp. but generates the correct ouput if you use SQLT.

What do you think about a config option which tells DBIC to not handle the trigger actions (on_delete on_update resp. cascade_delete)? If this is set the DBMS is to handle those operations which will result in a significant speed increase. If this config option is not set DBIC is to handle all those actions (CASCADE, SET NULL, RESTRICT, NO ACTION, SET DEFAULT).

This way it's still independent from the DBMS.

I just want to know if you guys think if this is useful and I'll try to write patches and so on.

greets,

moritz

Index: /Users/mo/Documents/workspace/DBIx-Class/lib/SQL/Translator/ Parser/DBIx/Class.pm
===================================================================
--- /Users/mo/Documents/workspace/DBIx-Class/lib/SQL/Translator/Parser/ DBIx/Class.pm (revision 4223) +++ /Users/mo/Documents/workspace/DBIx-Class/lib/SQL/Translator/Parser/ DBIx/Class.pm (working copy)
@@ -135,6 +135,8 @@
                 my $on_update = '';

                 if (defined $otherrelationship) {
+ $on_delete = $otherrelationship->{'attrs'}- >{on_delete} || ''; + $on_update = $otherrelationship->{'attrs'}- >{on_update} || ''; $on_delete = $otherrelationship->{'attrs'}- >{cascade_delete} ? 'CASCADE' : ''; $on_update = $otherrelationship->{'attrs'}- >{cascade_copy} ? 'CASCADE' : '';
                 }


_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]

Reply via email to