41 if ($schema->inherits) {
51 if ($schema->commit) {
52 $props [] =
"ON COMMIT {$schema->commit}";
54 if ($schema->tablespace) {
55 $props [] =
"TABLESPACE {$schema->tablespace}";
59 foreach ($schema->
columns() as $column) {
60 $columns[] = $column->toSql();
63 $columns = array_filter($columns);
64 $columns = join(
', ' . PHP_EOL, $columns);
68 $query[] =
"DROP TABLE IF EXISTS {$name}";
69 $query[] =
"CREATE TABLE {$name} (" . PHP_EOL
72 . join(
' ' . PHP_EOL, $props);
74 return join(
';' . PHP_EOL, $query);
92 if ($schema->
isDirty(ZendDbSchema_Db_Schema_Table::NAME_KEY)) {
94 if ($oldName && $oldName != $name) {
95 $query[] =
"ALTER TABLE {$oldName} RENAME TO {$name}";
99 if ($schema->
isDirty(
'owner')) {
100 $query[] =
"ALTER TABLE {$name} OWNER TO {$schema->owner}";
103 if ($schema->
isDirty(
'tablespace')) {
104 $query[] =
"ALTER TABLE {$name} SET TABLESPACE {$schema->tablespace}";
107 if ($schema->
isDirty(
'schema')) {
111 return join(
';' . PHP_EOL, $query);
125 return "DROP TABLE IF EXISTS {$schema->getOriginName()}";
138 $query[] = $schema->type;
140 if ($schema->getLength()) {
141 $query[] =
"({$schema->getLength()})";
145 $query[] =
"NOT NULL";
146 } elseif (null === $schema->default) {
147 $query[] =
"DEFAULT NULL";
150 if (null !== $schema->default) {
151 $query[] =
"DEFAULT {$schema->default}";
153 return join(
' ', $query);
165 return "{$name}" .
' ' . $this->
_columnSql($schema);
182 $prefix =
"ALTER TABLE {$schema->getTable()->getName()}";
186 if ($oldName && $oldName != $name) {
188 $query[] = $prefix .
" RENAME {$oldName} TO {$name}";
189 } elseif ($schema->
isDirty(
'type') || $schema->
isDirty(
'length')) {
190 $query[] = $prefix .
" ALTER {$name} " . $this->
_columnSql($schema);
193 $query[] = $prefix .
" ADD {$name} " . $this->
_columnSql($schema);
196 return join(
' ', $query);
208 $table = $schema->
getTable()->getName();
210 return "ALTER TABLE {$table} DROP COLUMN {$name}";
222 $table = $schema->
getTable()->getName();
226 $columns =
"(" . join(
', ', $schema->
getColumns()) .
")";
228 $type = strtoupper($schema->type);
234 $query[] =
"CREATE {$type} INDEX {$name} ON {$table} {$columns}";
236 return join(
';' . PHP_EOL, $query);
259 $table = $schema->
getTable()->getName();
261 $query =
"DROP INDEX IF EXISTS {$name} ON {$table}";
274 $table = $schema->
getTable()->getName();
276 $query =
"ALTER TABLE {$table} ADD PRIMARY KEY ({$columns})";
289 $table = $schema->
getTable()->getName();
291 $query =
"ALTER TABLE {$table} DROP PRIMARY KEY";
306 $query[] =
"CONSTRAINT {$name}";
311 $refColumns = join(
',', array_values($columns));
312 $columns = join(
',', array_keys($columns));
315 $query[] =
" FOREIGN KEY ({$columns}) REFERENCES {$refTable} ({$refColumns})";
318 $query[] =
" ON DELETE {$delete}";
321 $query[] =
" ON UPDATE {$update}";
324 $table = $schema->
getTable()->getName();
326 return "ALTER TABLE {$table} ADD " . join(
' ', $query);
342 return join(
';' . PHP_EOL, $query);
353 $table = $schema->
getTable()->getName();
356 $query =
"ALTER TABLE {$table} DROP FOREIGN KEY {$name}";