SQL-Engine

 view release on metacpan or  search on metacpan

examples/mssql  view on Meta::CPAN


# * column rename
#
# ALTER TABLE users RENAME COLUMN accessed TO accessed_at

$sql->column_rename(
  for => {
    table => 'users'
  },
  name => {
    old => 'accessed',
    new => 'accessed_at'
  }
);

say $sql->operations->pull->statement;

# constraint-create operations

# * constraint
#
# ALTER TABLE users ADD CONSTRAINT foreign_users_profile_id (profile_id) REFERENCES profiles (id)

$sql->constraint_create(
  source => {
    table => 'users',
    column => 'profile_id'
  },
  target => {
    table => 'profiles',
    column => 'id'
  }
);

say $sql->operations->pull->statement;

# * named constraint
#
# ALTER TABLE users ADD CONSTRAINT user_profile_id (profile_id) REFERENCES profiles (id)

$sql->constraint_create(
  source => {
    table => 'users',
    column => 'profile_id'
  },
  target => {
    table => 'profiles',
    column => 'id'
  },
  name => 'user_profile_id'
);

say $sql->operations->pull->statement;

# * named constraint, on update, on delete
#
# ALTER TABLE ADD CONSTRAINT user_defined_name (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE

$sql->constraint_create(
  on => {
    update => 'cascade',
    delete => 'cascade'
  },
  source => {
    table => 'users',
    column => 'profile_id'
  },
  target => {
    table => 'profiles',
    column => 'id'
  },
  name => 'user_profile_id'
);

say $sql->operations->pull->statement;

# constraint-drop operations

# * constraint
#
# ALTER TABLE DROP CONSTRAINT generated

$sql->constraint_drop(
  source => {
    table => 'users',
    column => 'profile_id'
  },
  target => {
    table => 'profiles',
    column => 'id'
  }
);

say $sql->operations->pull->statement;

# * named constraint
#
# ALTER TABLE DROP CONSTRAINT user_defined_name

$sql->constraint_drop(
  source => {
    table => 'users',
    column => 'profile_id'
  },
  target => {
    table => 'profiles',
    column => 'id'
  },
  name => 'user_profile_id'
);

say $sql->operations->pull->statement;

# database-create operations

# * database create
#
# CREATE DATABASE todoapp

$sql->database_create(
  name => 'todoapp'
);

examples/mssql  view on Meta::CPAN

      type => 'text',
    },
    {
      name => 'created',
      type => 'datetime',
    },
    {
      name => 'updated',
      type => 'datetime',
    },
    {
      name => 'deleted',
      type => 'datetime',
    },
  ],
  temp => 1
);

say $sql->operations->pull->statement;

# * table, subquery
#
# CREATE TABLE people AS SELECT * FROM users

$sql->table_create(
  name => 'people',
  query => {
    select => {
      from => {
        table => 'users'
      },
      columns => [
        {
          column => '*'
        }
      ]
    }
  }
);

say $sql->operations->pull->statement;

# table-drop operations

# * table
#
# DROP TABLE users

$sql->table_drop(
  name => 'people'
);

say $sql->operations->pull->statement;

# * table, condition
#
# DROP TABLE users CASCADE

$sql->table_drop(
  name => 'people',
  condition => 'cascade'
);

say $sql->operations->pull->statement;

# table-rename operations

# * table rename
#
# ALTER TABLE peoples RENAME TO people

$sql->table_rename(
  name => {
    old => 'peoples',
    new => 'people'
  }
);

say $sql->operations->pull->statement;

# transaction operations

# * transaction
#
# BEGIN;
# CREATE TABLE ...;
# END;

$sql->transaction(
  queries => [
    {
      'table-create' => {
        name => 'users',
        columns => [
          {
            name => 'id',
            type => 'integer',
            primary => 1
          }
        ]
      }
    }
  ]
);

while (my $op = $sql->operations->pull) {
  say $op->statement;
}

# * transaction mode
#
# BEGIN DEFERRED;
# CREATE TABLE ...;
# END;

$sql->transaction(
  mode => [
    'exclusive'
  ],
  queries => [
    {



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