CellBIS-SQL-Abstract

 view release on metacpan or  search on metacpan

t/03-additional/pg/create-table-with-fk.t  view on Meta::CPAN

#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use CellBIS::SQL::Abstract;

my $sql_abstract = CellBIS::SQL::Abstract->new(db_type => 'pg');
my $create_table = '';
my $to_compare
  = 'CREATE TABLE IF NOT EXISTS company( '
  . 'id_company INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, '
  . 'id_company_users INT(11) NOT NULL, '
  . 'company_name VARCHAR(200) NOT NULL, '
  . 'CONSTRAINT user_company_fk FOREIGN KEY (id_company_users) REFERENCES users (id) '
  . 'ON DELETE CASCADE ON UPDATE CASCADE )';

my $table_name = 'company';
my $col_list   = ['id_company', 'id_company_users', 'company_name',];
my $col_attr   = {
  'id_company' => {
    type          => {name => 'int', size => '11'},
    is_primarykey => 1,
    is_autoincre  => 1,
  },
  'id_company_users' => {type => {name => 'int', size => '11',}, is_null => 0,},
  'company_name' => {type => {name => 'varchar', size => '200',}, is_null => 0,}
};
my $table_attr = {
  fk => {
    name         => 'user_company_fk',
    col_name     => 'id_company_users',
    table_target => 'users',
    col_target   => 'id',
    attr         => {onupdate => 'cascade', ondelete => 'cascade'}
  },
  charset => 'utf8',
  engine  => 'innodb',
};
$create_table
  = $sql_abstract->create_table($table_name, $col_list, $col_attr, $table_attr);
my $on_liner = $sql_abstract->to_one_liner($create_table);

is($on_liner, $to_compare, "Query Table has created : \n$create_table\n");

done_testing();



( run in 1.874 second using v1.01-cache-2.11-cpan-e1769b4cff6 )