From 1a30f25311a2f971546bbd292c696ff74262bfb6 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Mon, 8 Aug 2011 18:18:16 +0200 Subject: [PATCH] Default trigger statement --- adminer/drivers/mssql.inc.php | 3 +++ adminer/drivers/mysql.inc.php | 3 +++ adminer/drivers/pgsql.inc.php | 3 +++ adminer/drivers/sqlite.inc.php | 3 +++ adminer/trigger.inc.php | 8 +++----- changes.txt | 1 + 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index cce603d5..af0e47ee 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -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], diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index 27345b9a..7c546560 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -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); } diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 9a3b7e64..0519a990 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -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); } diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 46c440ad..979074a3 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -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]); } diff --git a/adminer/trigger.inc.php b/adminer/trigger.inc.php index d072c263..66f500c0 100644 --- a/adminer/trigger.inc.php +++ b/adminer/trigger.inc.php @@ -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"); } ?> diff --git a/changes.txt b/changes.txt index b8b4de3d..7742a19a 100644 --- a/changes.txt +++ b/changes.txt @@ -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