}
/** Drop old object and create a new one
-* @param string drop query
-* @param string create query
-* @param string test query
-* @param string drop test query
+* @param string drop old object query
+* @param string create new object query
+* @param string drop new object query
+* @param string create test object query
+* @param string drop test object query
+* @param string
* @param string
* @param string
* @param string
* @param string
* @return null redirect in success
*/
-function drop_create($drop, $create, $test, $drop_test, $location, $message_drop, $message_alter, $message_create, $name) {
+function drop_create($drop, $create, $drop_created, $test, $drop_test, $location, $message_drop, $message_alter, $message_create, $old_name, $new_name) {
if ($_POST["drop"]) {
query_redirect($drop, $location, $message_drop);
+ } elseif ($old_name == "") {
+ query_redirect($create, $location, $message_create);
+ } elseif ($old_name != $new_name) {
+ $created = queries($create);
+ queries_redirect($location, $message_alter, $created && queries($drop));
+ if ($created) {
+ queries($drop_created);
+ }
} else {
queries_redirect(
$location,
- ($name != "" ? $message_alter : $message_create),
- ($name == "" || (queries($test) && queries($drop_test) && queries($drop))) && queries($create)
+ $message_alter,
+ queries($test) && queries($drop_test) && queries($drop) && queries($create)
);
}
}
drop_create(
"DROP $routine " . idf_escape($PROCEDURE),
create_routine($routine, $row),
+ "DROP $routine " . idf_escape($row["name"]),
create_routine($routine, array("name" => $temp_name) + $row),
"DROP $routine " . idf_escape($temp_name),
substr(ME, 0, -1),
lang('Routine has been dropped.'),
lang('Routine has been altered.'),
lang('Routine has been created.'),
- $PROCEDURE
+ $PROCEDURE,
+ $row["name"]
);
}
if ($_POST && !$error) {
$name = trim($row["name"]);
- $temp_name = $name . "_adminer_" . uniqid();
$as = " AS\n$row[select]";
- drop_create(
- "DROP VIEW " . table($TABLE),
- "CREATE VIEW " . table($name) . $as,
- "CREATE VIEW " . table($temp_name) . $as,
- "DROP VIEW " . table($temp_name),
- ($_POST["drop"] ? substr(ME, 0, -1) : ME . "table=" . urlencode($name)),
- lang('View has been dropped.'),
- lang('View has been altered.'),
- lang('View has been created.'),
- $TABLE
- );
+ $location = ME . "table=" . urlencode($name);
+ $message = lang('View has been altered.');
+
+ if (!$_POST["drop"] && $TABLE == $name && $jush != "sqlite") {
+ query_redirect(($jush == "mssql" ? "ALTER" : "CREATE OR REPLACE") . " VIEW " . table($name) . $as, $location, $message);
+ } else {
+ $temp_name = $name . "_adminer_" . uniqid();
+ drop_create(
+ "DROP VIEW " . table($TABLE),
+ "CREATE VIEW " . table($name) . $as,
+ "DROP VIEW " . table($name),
+ "CREATE VIEW " . table($temp_name) . $as,
+ "DROP VIEW " . table($temp_name),
+ ($_POST["drop"] ? substr(ME, 0, -1) : $location),
+ lang('View has been dropped.'),
+ $message,
+ lang('View has been created.'),
+ $TABLE,
+ $name
+ );
+ }
}
page_header(($TABLE != "" ? lang('Alter view') : lang('Create view')), $error, array("table" => $TABLE), $TABLE);