]> git.joonet.de Git - adminer.git/commitdiff
Default trigger statement
authorJakub Vrana <jakub@vrana.cz>
Mon, 8 Aug 2011 16:18:16 +0000 (18:18 +0200)
committerJakub Vrana <jakub@vrana.cz>
Mon, 8 Aug 2011 16:18:16 +0000 (18:18 +0200)
adminer/drivers/mssql.inc.php
adminer/drivers/mysql.inc.php
adminer/drivers/pgsql.inc.php
adminer/drivers/sqlite.inc.php
adminer/trigger.inc.php
changes.txt

index cce603d5012a31cf647946fd1d3e683dcd300187..af0e47ee20f57ebb0aeb78b1a3505f371103f42a 100644 (file)
@@ -521,6 +521,9 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
        }
        
        function trigger($name) {
+               if ($name == "") {
+                       return array();
+               }
                $rows = get_rows("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],
index 27345b9adbfea15b94ce018d89b0e7df3f107557..7c54656066522082f959b096eef68a88e629b5c8 100644 (file)
@@ -697,6 +697,9 @@ if (!defined("DRIVER")) {
        * @return array array("Trigger" => , "Timing" => , "Event" => , "Statement" => )
        */
        function trigger($name) {
+               if ($name == "") {
+                       return array();
+               }
                $rows = get_rows("SHOW TRIGGERS WHERE `Trigger` = " . q($name));
                return reset($rows);
        }
index 9a3b7e64857f567563cb4d112f1c1636f3aaf1cf..0519a99095215ba987574af282d1cc8e39bb1eb9 100644 (file)
@@ -440,6 +440,9 @@ ORDER BY conkey, conname") as $row) {
        }
        
        function trigger($name) {
+               if ($name == "") {
+                       return array("Statement" => "EXECUTE PROCEDURE ()");
+               }
                $rows = get_rows('SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = ' . q($_GET["trigger"]) . ' AND trigger_name = ' . q($name));
                return reset($rows);
        }
index 46c440addc02e34767a4a13d00b92fee74fbd76e..979074a3840e243f071c97560e46efe6eaa0505b 100644 (file)
@@ -450,6 +450,9 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
        
        function trigger($name) {
                global $connection;
+               if ($name == "") {
+                       return array("Statement" => "BEGIN\n\t;\nEND\n");
+               }
                preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*([a-z]+)\\s+([a-z]+)\\s+ON\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(?:FOR\\s*EACH\\s*ROW\\s)?(.*)~is', $connection->result("SELECT sql FROM sqlite_master WHERE name = " . q($name)), $match);
                return array("Timing" => strtoupper($match[1]), "Event" => strtoupper($match[2]), "Trigger" => $name, "Statement" => $match[3]);
        }
index d072c26361419fa576c09339176368586e875189..66f500c048b06f6bb68ff7778d047b301cb9a085 100644 (file)
@@ -20,11 +20,9 @@ if ($_POST && !$error && in_array($_POST["Timing"], $trigger_options["Timing"])
 
 page_header(($_GET["name"] != "" ? lang('Alter trigger') . ": " . h($_GET["name"]) : lang('Create trigger')), $error, array("table" => $TABLE));
 
-$row = array("Trigger" => $TABLE . "_bi");
-if ($_POST) {
-       $row = $_POST;
-} elseif ($_GET["name"] != "") {
-       $row = trigger($_GET["name"]);
+$row = $_POST;
+if (!$row) {
+       $row = trigger($_GET["name"]) + array("Trigger" => $TABLE . "_bi");
 }
 ?>
 
index b8b4de3df878b398f9e38c64e181fe3beceac891..7742a19a3c74934473951aee9d9cc9ca02d4a2dd 100644 (file)
@@ -1,5 +1,6 @@
 Adminer 3.3.3-dev:
 Fix trigger export (SQLite)
+Default trigger statement (SQLite, PostgreSQL)
 
 Adminer 3.3.2 (released 2011-08-08):
 Display error with non-existent row in edit