Quiq
view release on metacpan or search on metacpan
lib/Quiq/Database/Connection.pm view on Meta::CPAN
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
lib/Quiq/Sql.pm view on Meta::CPAN
=item -disable => $bool (Default: 0)
Constraint wird erzeugt, ist aber abgeschaltet.
=item -exceptionTable => $tableName (Default: keiner)
Constraint-Verletzende Datensätze werden in Tabelle $tableName
protokollliert (nur Oracle).
=item -onDelete => 'cascade'|'null' (Default: keiner)
Legt fest, was bei Löschung des Parent-Datensatzes passieren soll.
=item -refTableCols => \@refTableCols (Default: undef)
Liste der Kolumnen in der referenzierten Tabelle.
Bei MySQL müssen die referenzierten Kolumnen aufgezählt werden, auch wenn
ein Primary Key auf der referenzierten Tabelle definiert ist.
=back
lib/Quiq/Sql.pm view on Meta::CPAN
=cut
# -----------------------------------------------------------------------------
sub dropFunction {
my $self = shift;
# @_: $signature,@opt
# Argumente
my $cascade = 0;
Quiq::Option->extract(\@_,
-cascade => \$cascade,
);
my $signature = shift;
my ($oracle,$postgresql,$sqlite,$mysql) = $self->dbmsTestVector;
if ($postgresql) {
my $stmt = "DROP FUNCTION $signature";
if ($cascade) {
$stmt .= ' CASCADE';
}
return $stmt;
}
$self->throw('Not implemented');
}
# -----------------------------------------------------------------------------
t/bin/Quiq/Sql.t view on Meta::CPAN
sub test_addForeignKeyConstraint : Test(6) {
my $self = shift;
# PostgreSQL
my $sql = Quiq::Sql->new('PostgreSQL');
my $stmt = $sql->addForeignKeyConstraint('tab1',['col1','col2'],'tab2',
-constraintName => 'tab1_tab2_FK',
-defer => 1,
-onDelete => 'cascade',
);
$self->like($stmt,qr/ALTER TABLE tab1 ADD/);
$self->like($stmt,qr/CONSTRAINT tab1_tab2_FK/);
$self->like($stmt,qr/FOREIGN KEY \(col1, col2\)/);
$self->like($stmt,qr/REFERENCES tab2/);
$self->like($stmt,qr/ON DELETE CASCADE/);
$self->like($stmt,qr/DEFERRABLE INITIALLY DEFERRED/);
}
# -----------------------------------------------------------------------------
( run in 0.508 second using v1.01-cache-2.11-cpan-49f99fa48dc )