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.718 second using v1.01-cache-2.11-cpan-5dc5da66d9d )