use strict;
use warnings;
-use vars qw[ $DEBUG $WARN $VERSION ];
-$VERSION = '1.59';
+our ( $DEBUG, $WARN );
+our $VERSION = '1.59';
$DEBUG = 0 unless defined $DEBUG;
use base qw(SQL::Translator::Producer);
});
}
+ for my $trigger ( $schema->get_triggers ) {
+ push @table_defs, create_trigger( $trigger, {
+ add_drop_trigger => $add_drop_table,
+ no_comments => $no_comments,
+ });
+ }
+
push @output, map { "$_;\n\n" } values %type_defs;
push @output, map { "$_;\n\n" } @table_defs;
if ( @fks ) {
my $type = $index->type || NORMAL;
my @fields = $index->fields;
- next unless @fields;
+ return unless @fields;
my $def_start = qq[CONSTRAINT ${qf}$name${qf} ];
my $field_names = '(' . join(", ", (map { $_ =~ /\(.*\)/ ? $_ : ($qf . $_ . $qf ) } @fields)) . ')';
return \@constraint_defs, \@fks;
}
+sub create_trigger {
+ my ($trigger,$options) = @_;
+
+ my @statements;
+
+ push @statements, sprintf( 'DROP TRIGGER IF EXISTS %s', $trigger->name )
+ if $options->{add_drop_trigger};
+
+ my $scope = $trigger->scope || '';
+ $scope = " FOR EACH $scope" if $scope;
+
+ push @statements, sprintf(
+ 'CREATE TRIGGER %s %s %s ON %s%s %s',
+ $trigger->name,
+ $trigger->perform_action_when,
+ join( ' OR ', @{ $trigger->database_events } ),
+ $trigger->on_table,
+ $scope,
+ $trigger->action,
+ );
+
+ return @statements;
+}
+
sub convert_datatype
{
my ($field) = @_;