Merge pull request #9608 from annando/delete-table-view
Ensure that a view is a view and not a table
This commit is contained in:
commit
d05d5a0381
|
@ -111,7 +111,11 @@ class View
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = sprintf("DROP VIEW IF EXISTS `%s`", DBA::escape($name));
|
if (self::isView($name)) {
|
||||||
|
$sql = sprintf("DROP VIEW `%s`", DBA::escape($name));
|
||||||
|
} elseif (self::isTable($name)) {
|
||||||
|
$sql = sprintf("DROP TABLE `%s`", DBA::escape($name));
|
||||||
|
}
|
||||||
|
|
||||||
if ($verbose) {
|
if ($verbose) {
|
||||||
echo $sql . ";\n";
|
echo $sql . ";\n";
|
||||||
|
@ -134,4 +138,40 @@ class View
|
||||||
|
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given table/view is a view
|
||||||
|
*
|
||||||
|
* @param string $view
|
||||||
|
* @return boolean "true" if it's a view
|
||||||
|
*/
|
||||||
|
private static function isView(string $view)
|
||||||
|
{
|
||||||
|
$status = DBA::selectFirst(['INFORMATION_SCHEMA' => 'TABLES'], ['TABLE_TYPE'],
|
||||||
|
['TABLE_SCHEMA' => DBA::databaseName(), 'TABLE_NAME' => $view]);
|
||||||
|
|
||||||
|
if (empty($status['TABLE_TYPE'])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $status['TABLE_TYPE'] == 'VIEW';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given table/view is a view
|
||||||
|
*
|
||||||
|
* @param string $table
|
||||||
|
* @return boolean "true" if it's a table
|
||||||
|
*/
|
||||||
|
private static function isTable(string $table)
|
||||||
|
{
|
||||||
|
$status = DBA::selectFirst(['INFORMATION_SCHEMA' => 'TABLES'], ['TABLE_TYPE'],
|
||||||
|
['TABLE_SCHEMA' => DBA::databaseName(), 'TABLE_NAME' => $table]);
|
||||||
|
|
||||||
|
if (empty($status['TABLE_TYPE'])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $status['TABLE_TYPE'] == 'BASE TABLE';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user