Prty
    
    
  
  
  
view release on metacpan or search on metacpan
lib/Prty/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/Prty/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/Prty/Sql.pm view on Meta::CPAN
            }
            if ($str) {
                $stmt .= " ($str)";
            }
        }
        # ON DELETE
        if ($onDelete) {
            $stmt .= "\n    ON DELETE ";
            if ($onDelete eq 'cascade') {
                $stmt .= 'CASCADE';
            }
            elsif ($onDelete eq 'null') {
                $stmt .= 'SET NULL';
            }
            else {
                $self->throw;
            }
        }
lib/Prty/Sql.pm view on Meta::CPAN
=cut
# -----------------------------------------------------------------------------
sub dropFunction {
    my $self = shift;
    # @_: $name,@opt
    # Argumente
    my $cascade = 0;
    Prty::Option->extract(\@_,
        -cascade=>\$cascade,
    );
    my $name = shift;
    my ($oracle,$postgresql,$sqlite,$mysql) = $self->dbmsTestVector;
    if ($postgresql) {
        my $stmt = "DROP FUNCTION $name()";
        if ($cascade) {
            $stmt .= ' CASCADE';
        }
        return $stmt;
    }
    $self->throw('Not implemented');
}
# -----------------------------------------------------------------------------
t/bin/Prty/Sql.t view on Meta::CPAN
sub test_addForeignKeyConstraint : Test(6) {
    my $self = shift;
    # PostgreSQL
    my $sql = Prty::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.463 second using v1.01-cache-2.11-cpan-5dc5da66d9d )