From: xzilla Date: Thu, 14 Apr 2005 18:20:10 +0000 (+0000) Subject: Add row|statement level options to create trigger. Tested on 7.3/7.4. X-Git-Tag: REL_4-0-1~138 X-Git-Url: http://git.postgresql.org/gitweb/delmail?a=commitdiff_plain;h=1e0730cb9e5098e2a4ff8b61f970b8f36064f545;p=phppgadmin.git Add row|statement level options to create trigger. Tested on 7.3/7.4. --- diff --git a/HISTORY b/HISTORY index 9a1b76b2..3f9da877 100644 --- a/HISTORY +++ b/HISTORY @@ -13,6 +13,7 @@ Features and SELECT results. * Add support for PostgreSQL 8.1devel * primary key and unique key at table creation (Andreas Huber) +* Add row|statement level options to create trigger for >= 7.4 (Robert Treat) Bugs * Tree Icons are displayed middle instead of top diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index 67cc8389..4d8f03d6 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -4,7 +4,7 @@ * A class that implements the DB interface for Postgres * Note: This class uses ADODB and returns RecordSets. * - * $Id: Postgres.php,v 1.258 2005/03/26 10:47:03 chriskl Exp $ + * $Id: Postgres.php,v 1.259 2005/04/14 18:20:12 xzilla Exp $ */ // @@@ THOUGHT: What about inherits? ie. use of ONLY??? @@ -32,6 +32,8 @@ class Postgres extends ADODB_base { 'DELETE OR UPDATE', 'INSERT OR DELETE OR UPDATE'); // When to execute the trigger var $triggerExecTimes = array('BEFORE', 'AFTER'); + // How often to execute the trigger + var $triggerFrequency = array('ROW'); // Foreign key stuff. First element MUST be the default. var $fkactions = array('NO ACTION', 'RESTRICT', 'CASCADE', 'SET NULL', 'SET DEFAULT'); var $fkmatches = array('MATCH SIMPLE', 'MATCH FULL'); @@ -2962,7 +2964,7 @@ class Postgres extends ADODB_base { * @param $tgargs The function arguments * @return 0 success */ - function createTrigger($tgname, $table, $tgproc, $tgtime, $tgevent, $tgargs) { + function createTrigger($tgname, $table, $tgproc, $tgtime, $tgevent, $tgfrequency, $tgargs) { $this->fieldClean($tgname); $this->fieldClean($table); $this->fieldClean($tgproc); @@ -2970,7 +2972,7 @@ class Postgres extends ADODB_base { /* No Statement Level Triggers in PostgreSQL (by now) */ $sql = "CREATE TRIGGER \"{$tgname}\" {$tgtime} {$tgevent} ON \"{$table}\" - FOR EACH ROW EXECUTE PROCEDURE \"{$tgproc}\"({$tgargs})"; + FOR EACH {$tgfrequency} EXECUTE PROCEDURE \"{$tgproc}\"({$tgargs})"; return $this->execute($sql); } diff --git a/classes/database/Postgres74.php b/classes/database/Postgres74.php index 39866623..0f259df9 100644 --- a/classes/database/Postgres74.php +++ b/classes/database/Postgres74.php @@ -4,7 +4,7 @@ * A class that implements the DB interface for Postgres * Note: This class uses ADODB and returns RecordSets. * - * $Id: Postgres74.php,v 1.41 2004/10/06 08:43:33 jollytoad Exp $ + * $Id: Postgres74.php,v 1.42 2005/04/14 18:20:14 xzilla Exp $ */ include_once('./classes/database/Postgres73.php'); @@ -17,6 +17,9 @@ class Postgres74 extends Postgres73 { // Max object name length var $_maxNameLen = 63; + // How often to execute the trigger + var $triggerFrequency = array('STATEMENT','ROW'); + /** * Constructor * @param $conn The database connection diff --git a/lang/english.php b/lang/english.php index bb03a945..c800bffd 100755 --- a/lang/english.php +++ b/lang/english.php @@ -4,7 +4,7 @@ * English language file for phpPgAdmin. Use this as a basis * for new translations. * - * $Id: english.php,v 1.172 2005/04/12 01:52:17 chriskl Exp $ + * $Id: english.php,v 1.173 2005/04/14 18:20:15 xzilla Exp $ */ // Language and character set @@ -455,6 +455,7 @@ $lang['strtriggerdroppedbad'] = 'Trigger drop failed.'; $lang['strtriggeraltered'] = 'Trigger altered.'; $lang['strtriggeralteredbad'] = 'Trigger alteration failed.'; + $lang['strfrequency'] = 'Frequency'; // Types $lang['strtype'] = 'Type'; diff --git a/lang/recoded/english.php b/lang/recoded/english.php index a01a3317..2bb015c5 100644 --- a/lang/recoded/english.php +++ b/lang/recoded/english.php @@ -4,7 +4,7 @@ * English language file for phpPgAdmin. Use this as a basis * for new translations. * - * $Id: english.php,v 1.124 2005/04/12 01:52:17 chriskl Exp $ + * $Id: english.php,v 1.125 2005/04/14 18:20:15 xzilla Exp $ */ // Language and character set @@ -455,6 +455,7 @@ $lang['strtriggerdroppedbad'] = 'Trigger drop failed.'; $lang['strtriggeraltered'] = 'Trigger altered.'; $lang['strtriggeralteredbad'] = 'Trigger alteration failed.'; + $lang['strfrequency'] = 'Frequency'; // Types $lang['strtype'] = 'Type'; diff --git a/triggers.php b/triggers.php index 332b3283..c88e9775 100644 --- a/triggers.php +++ b/triggers.php @@ -3,7 +3,7 @@ /** * List triggers on a table * - * $Id: triggers.php,v 1.24 2004/09/28 13:09:31 jollytoad Exp $ + * $Id: triggers.php,v 1.25 2005/04/14 18:20:10 xzilla Exp $ */ // Include application functions @@ -131,20 +131,30 @@ $sel2 = new XHTML_Select('formEvent'); $sel2->set_data($data->triggerEvents); + /* Populate occurences */ + $sel3 = new XHTML_Select('formFrequency'); + $sel3->set_data($data->triggerFrequency); + echo "
\n"; echo "\n"; - echo "\n"; - echo "\n"; echo "\n"; - echo " \n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "\n"; echo " \n"; + echo " \n"; echo "\n"; echo "\n"; - echo " \n"; - echo " \n"; + echo " \n"; + echo " \n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; echo "\n"; echo "
{$lang['strname']}
{$lang['strwhen']}{$lang['strname']}{$lang['strwhen']}
", $sel1->fetch(), "
{$lang['strevent']}{$lang['strfrequency']}
", $sel1->fetch(), "", $sel2->fetch(), " ", $sel2->fetch(), " ", $sel3->fetch(), "
{$lang['strfunction']}{$lang['strarguments']}
{$lang['strfunction']} {$lang['strarguments']}
", $sel0->fetch(), "()
\n"; @@ -174,7 +184,7 @@ else { $status = &$data->createTrigger($_POST['formTriggerName'], $_POST['table'], $_POST['formFunction'], $_POST['formExecTime'], $_POST['formEvent'], - $_POST['formTriggerArgs']); + $_POST['formFrequency'], $_POST['formTriggerArgs']); if ($status == 0) doDefault($lang['strtriggercreated']); else