Driver specific trigger export
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1519 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
parent
da8a1b66b9
commit
cc04be2eb2
|
@ -770,6 +770,24 @@ if (!defined("DRIVER")) {
|
||||||
return "USE " . idf_escape($database);
|
return "USE " . idf_escape($database);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get SQL commands to create triggers
|
||||||
|
* @param string
|
||||||
|
* @param string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function trigger_sql($table, $style) {
|
||||||
|
global $connection;
|
||||||
|
$result = $connection->query("SHOW TRIGGERS LIKE " . $connection->quote(addcslashes($table, "%_")));
|
||||||
|
$return = "";
|
||||||
|
if ($result->num_rows) {
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
$return .= "\n" . ($style == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($row["Trigger"]) . ";;\n" : "")
|
||||||
|
. "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . idf_escape($row["Table"]) . " FOR EACH ROW\n$row[Statement];;\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
/** Get server variables
|
/** Get server variables
|
||||||
* @return array ($name => $value)
|
* @return array ($name => $value)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -498,7 +498,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
|
|
||||||
function create_sql($table) {
|
function create_sql($table) {
|
||||||
global $connection;
|
global $connection;
|
||||||
return $connection->result("SELECT sql FROM sqlite_master WHERE name = " . $connection->quote($table));
|
return $connection->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = " . $connection->quote($table));
|
||||||
}
|
}
|
||||||
|
|
||||||
function use_sql($database) {
|
function use_sql($database) {
|
||||||
|
@ -506,6 +506,11 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
return "ATTACH " . $connection->quote($database) . " AS " . idf_escape($database);
|
return "ATTACH " . $connection->quote($database) . " AS " . idf_escape($database);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function trigger_sql($table, $style) {
|
||||||
|
global $connection;
|
||||||
|
return implode("", get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND name = " . $connection->quote($table)));
|
||||||
|
}
|
||||||
|
|
||||||
function show_variables() {
|
function show_variables() {
|
||||||
global $connection;
|
global $connection;
|
||||||
$return = array();
|
$return = array();
|
||||||
|
|
|
@ -80,8 +80,11 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||||
if ($data) {
|
if ($data) {
|
||||||
dump_data($row["Name"], $_POST["data_style"]);
|
dump_data($row["Name"], $_POST["data_style"]);
|
||||||
}
|
}
|
||||||
if ($_POST["triggers"]) {
|
if ($_POST["format"] == "sql" && $_POST["triggers"]) {
|
||||||
dump_triggers($row["Name"], $_POST["table_style"]);
|
$triggers = trigger_sql($row["Name"], $_POST["table_style"]);
|
||||||
|
if ($triggers) {
|
||||||
|
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($ext == "tar") {
|
if ($ext == "tar") {
|
||||||
echo tar_file((DB != "" ? "" : "$db/") . "$row[Name].csv", ob_get_clean());
|
echo tar_file((DB != "" ? "" : "$db/") . "$row[Name].csv", ob_get_clean());
|
||||||
|
|
|
@ -9,21 +9,6 @@ function tar_file($filename, $contents) {
|
||||||
return $return . str_repeat("\0", 512 - strlen($return)) . $contents . str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
|
return $return . str_repeat("\0", 512 - strlen($return)) . $contents . str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
|
||||||
}
|
}
|
||||||
|
|
||||||
function dump_triggers($table, $style) {
|
|
||||||
global $connection;
|
|
||||||
if ($_POST["format"] == "sql" && $style && support("trigger")) {
|
|
||||||
$result = $connection->query("SHOW TRIGGERS LIKE " . $connection->quote(addcslashes($table, "%_")));
|
|
||||||
if ($result->num_rows) {
|
|
||||||
$s = "\nDELIMITER ;;\n";
|
|
||||||
while ($row = $result->fetch_assoc()) {
|
|
||||||
$s .= "\n" . ($style == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($row["Trigger"]) . ";;\n" : "")
|
|
||||||
. "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . idf_escape($row["Table"]) . " FOR EACH ROW\n$row[Statement];;\n";
|
|
||||||
}
|
|
||||||
echo "$s\nDELIMITER ;\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function dump_table($table, $style, $is_view = false) {
|
function dump_table($table, $style, $is_view = false) {
|
||||||
global $connection;
|
global $connection;
|
||||||
if ($_POST["format"] != "sql") {
|
if ($_POST["format"] != "sql") {
|
||||||
|
|
2
todo.txt
2
todo.txt
|
@ -28,7 +28,7 @@ Saving of MySQL 5 BIT data type - don't use quote()
|
||||||
|
|
||||||
SQLite:
|
SQLite:
|
||||||
CSV import - ON DUPLICATE KEY UPDATE
|
CSV import - ON DUPLICATE KEY UPDATE
|
||||||
Export - triggers, CREATE DATABASE
|
Export - CREATE DATABASE
|
||||||
Delimiter in export and SQL command
|
Delimiter in export and SQL command
|
||||||
Backward keys in Editor
|
Backward keys in Editor
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue