X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FSchema%2FTrigger.pm;h=8aa417123a866f3db61d389f00a6cbd7f6422848;hb=8ce5d6158b9fb1e09bda97b1061eea5232c268ad;hp=f974e8c026dead28f2cee4a153d19c5ee867ba7f;hpb=0013ee25dc2ec992dff4fe8c971dc224821ce1cb;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Schema/Trigger.pm b/lib/SQL/Translator/Schema/Trigger.pm index f974e8c..8aa4171 100644 --- a/lib/SQL/Translator/Schema/Trigger.pm +++ b/lib/SQL/Translator/Schema/Trigger.pm @@ -1,7 +1,7 @@ package SQL::Translator::Schema::Trigger; # ---------------------------------------------------------------------- -# $Id: Trigger.pm,v 1.8 2005-08-10 16:46:55 duality72 Exp $ +# $Id: Trigger.pm,v 1.9 2006-06-07 16:37:33 schiffbruechige Exp $ # ---------------------------------------------------------------------- # Copyright (C) 2002-4 SQLFairy Authors # @@ -54,12 +54,12 @@ use base 'SQL::Translator::Schema::Object'; use vars qw($VERSION $TABLE_COUNT $VIEW_COUNT); -$VERSION = sprintf "%d.%02d", q$Revision: 1.8 $ =~ /(\d+)\.(\d+)/; +$VERSION = sprintf "%d.%02d", q$Revision: 1.9 $ =~ /(\d+)\.(\d+)/; # ---------------------------------------------------------------------- __PACKAGE__->_attributes( qw/ - name perform_action_when database_event fields on_table action schema + name schema perform_action_when database_event fields table on_table action order /); @@ -171,22 +171,47 @@ Gets and set which fields to monitor for C. } # ---------------------------------------------------------------------- +sub table { + +=pod + +=head2 table + +Gets or set the table on which the trigger works, as a L object. + $trigger->table($triggered_table); + +=cut + + my ($self, $arg) = @_; + if ( @_ == 2 ) { + $self->error("Table attribute of a ".__PACKAGE__. + " must be a SQL::Translator::Schema::Table") + unless ref $arg and $arg->isa('SQL::Translator::Schema::Table'); + $self->{table} = $arg; + } + return $self->{table}; +} + +# ---------------------------------------------------------------------- sub on_table { =pod =head2 on_table -Gets or set the table name on which the trigger works. - - $trigger->table('foo'); +Gets or set the table name on which the trigger works, as a string. + $trigger->on_table('foo'); =cut - my $self = shift; - my $arg = shift || ''; - $self->{'on_table'} = $arg if $arg; - return $self->{'on_table'}; + my ($self, $arg) = @_; + if ( @_ == 2 ) { + my $table = $self->schema->get_table($arg); + die "Table named $arg doesn't exist" + if !$table; + $self->table($table); + } + return $self->table->name; } # ----------------------------------------------------------------------