1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-12 17:44:07 +02:00

Driver specific trigger options

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1478 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana
2010-04-22 15:53:42 +00:00
parent 0fd28dcccb
commit f9dd7aad69
5 changed files with 43 additions and 9 deletions

View File

@@ -412,12 +412,14 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table)
$result = $connection->query("SELECT s.name [Trigger],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
c.text [Statement]
c.text
FROM sysobjects s
JOIN syscomments c ON s.id = c.id
WHERE s.xtype = 'TR' AND s.name = " . $connection->quote($name)
);
return $result->fetch_assoc();
$row = $result->fetch_assoc();
$row["Statement"] = preg_replace('~^.+\\s+AS\\s+~isU', '', $row["text"]); //! identifiers, comments
return $row;
}
function triggers($table) {
@@ -436,6 +438,13 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . $connection->quote($table)
return $return;
}
function trigger_options() {
return array(
"Timing" => array("AFTER", "INSTEAD OF"),
"Type" => array("AS"),
);
}
function support($feature) {
return ereg('^(view|routine|trigger)$', $feature);
}

View File

@@ -454,7 +454,7 @@ if (!defined("DRIVER")) {
*/
function view($name) {
global $connection;
return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)* AS ~U', '', $connection->result("SHOW CREATE VIEW " . idf_escape($name), 1)));
return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $connection->result("SHOW CREATE VIEW " . idf_escape($name), 1)));
}
/** Get sorted grouped list of collations
@@ -648,6 +648,14 @@ if (!defined("DRIVER")) {
return $return;
}
function trigger_options() {
return array(
"Timing" => array("BEFORE", "AFTER"),
// Event is always INSERT, UPDATE, DELETE
"Type" => array("FOR EACH ROW"),
);
}
/** Explain select
* @param Min_DB
* @param string

View File

@@ -397,7 +397,7 @@ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . $connection->qu
function trigger($name) {
global $connection;
$result = $connection->query('SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = ' . $connection->quote($_GET["trigger"]) . ' AND trigger_name = ' . $connection->quote($name));
$result = $connection->query('SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = ' . $connection->quote($_GET["trigger"]) . ' AND trigger_name = ' . $connection->quote($name)); //! detect Type
return $result->fetch_assoc();
}
@@ -411,6 +411,13 @@ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . $connection->qu
return $return;
}
function trigger_options() {
return array(
"Timing" => array("BEFORE", "AFTER"),
"Type" => array("FOR EACH STATEMENT", "FOR EACH ROW"),
);
}
function explain($connection, $query) {
return $connection->query("EXPLAIN $query");
}

View File

@@ -453,6 +453,13 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
return $return;
}
function trigger_options() {
return array(
"Timing" => array("BEFORE", "AFTER", "INSTEAD OF"),
"Type" => array("FOR EACH ROW"),
);
}
function explain($connection, $query) {
return $connection->query("EXPLAIN $query");
}