FabForce::DBDesigner4::SQL::Mysql - create sql with mysql specific syntax


FabForce-DBDesigner4 documentation Contained in the FabForce-DBDesigner4 distribution.

Index


Code Index:

NAME

Top

FabForce::DBDesigner4::SQL::Mysql

VERSION

Top

version 0.306

SYNOPSIS

Top

  my $create_stmt = FabForce::DBDesigner4::SQL::Mysql->create_table( $fabforce_table_object );

DESCRIPTION

Top

As each database system has its own syntax, it is important to provide functions for each system.

NAME

Top

FabForce::DBDesigner4::SQL::Mysql - create sql with mysql specific syntax

METHODS

Top

create_table

  my $create_stmt = FabForce::DBDesigner4::SQL::Mysql->create_table( $fabforce_table_object );

Things it does:

* Use AUTO_INCREMENT instead of AUTOINCREMENT
* don't use foreign keys

drop_table

create a "drop table" statement for the given tablename

  $class->drop_table( $fabforce_table_object );

returns

  DROP TABLE IF EXISTS `tablename`

AUTHOR

Top

Renee Baecker, <module@renee-baecker.de>

COPYRIGHT AND LICENSE

Top

AUTHOR

Top

Renee Baecker <module@renee-baecker.de>

COPYRIGHT AND LICENSE

Top


FabForce-DBDesigner4 documentation Contained in the FabForce-DBDesigner4 distribution.
package FabForce::DBDesigner4::SQL::Mysql;

use strict;
use warnings;

our $VERSION     = '0.02';

sub create_table {
    my ($class,$table,$options) = @_;
        
    my @columns   = $table->columns();
    my $tablename = $table->name();
    
    my $cols_string =  join(",\n  ",@columns);
       $cols_string =~ s!\s+\z!!;
    
    $cols_string =~ s!AUTOINCREMENT!AUTO_INCREMENT!g;
    
    my $options_string = "";
    
    if ( $options and ref $options ) {
        my @options;
        if( $options->{engine} ) {
            push @options, 'ENGINE=' . $options->{engine};
        }
        if( $options->{charset} ) {
            push @options, 'DEFAULT CHARSET=' . $options->{charset};
        }

        $options_string = join ' ', @options;
    }
    
    my $stmt = "CREATE TABLE `$tablename` (\n  $cols_string,\n  ";
    $stmt   .= "PRIMARY KEY(" . join( ",", $table->key ) . "),\n  " 
        if scalar( $table->key ) > 0;
        
    $stmt    =~ s!,\n\s\s\z!\n!;
    
    $stmt   .= ")$options_string;\n\n";
}

sub drop_table {
    my ($class,$table,$options) = @_;
    
    my $name = $table->name;
    my $stmt = qq~DROP TABLE IF EXISTS `$name`;\n\n~;
    
    $stmt;
}

1;




__END__