Prty
view release on metacpan or search on metacpan
lib/Prty/Database/Connection.pm view on Meta::CPAN
-replace=>\$replace,
);
# Body ermitteln
my $body = @_ == 1? shift: {@_}->{$self->dbms};
# Trigger droppen
if ($replace && $self->triggerExists($name)) {
$self->dropTrigger($name);
}
# Trigger erzeugen
my $sql = $self->stmt;
if ($self->isOracle) {
my $stmt = $sql->createTrigger($table,$name,$when,$event,$level,
$body);
return $self->sqlAtomic($stmt,-forceExec=>1);
}
elsif ($self->isPostgreSQL) {
my $procName = $name.'_proc';
my $stmt = $sql->createFunction($procName,$body,
-returns=>'trigger'
);
$self->sqlAtomic($stmt);
$stmt = $sql->createTrigger($table,$name,$when,$event,$level,
-execute=>$procName,
);
return $self->sqlAtomic($stmt);
}
$self->throw('Not implemented');
}
# -----------------------------------------------------------------------------
=head3 dropTrigger() - Entferne Trigger
=head4 Synopsis
$cur = $db->dropTrigger($name);
=cut
# -----------------------------------------------------------------------------
sub dropTrigger {
my $self = shift;
my $name = shift;
my $sql = $self->stmt;
if ($self->isOracle) {
my $stmt = $sql->dropTrigger($name);
return $self->sqlAtomic($stmt);
}
elsif ($self->isPostgreSQL) {
my $stmt = $sql->dropFunction($name.'_proc',-cascade=>1);
return $self->sqlAtomic($stmt);
}
$self->throw('Not implemented');
}
# -----------------------------------------------------------------------------
=head3 triggerExists() - Prüfe, ob Trigger existiert
=head4 Synopsis
$bool = $db->triggerExists($name);
=cut
# -----------------------------------------------------------------------------
sub triggerExists {
my $self = shift;
my $name = shift;
my $row;
if ($self->isOracle) {
($row) = $self->lookup(
-from=>'all_triggers',
-where,trigger_name=>$name,
-raw=>1,
-sloppy=>1,
);
}
elsif ($self->isPostgreSQL) {
($row) = $self->lookup(
-from=>'pg_proc',
-where,proname=>$name.'_proc',
-raw=>1,
-sloppy=>1,
);
}
else {
$self->throw('Not implemented');
}
return $row? 1: 0;
}
# -----------------------------------------------------------------------------
=head2 Spezielle Operationen
=head3 diff() - Ermittele Datendifferenzen
=head4 Synopsis
$tab|@rows|$cur = $db->diff(@args);
=head4 Options
Wie $db->select()
( run in 0.694 second using v1.01-cache-2.11-cpan-13bb782fe5a )