| // +----------------------------------------------------------------------+ // // $Id: MDB2_nonstandard_pgsql.php,v 1.5 2007/03/04 21:36:08 quipo Exp $ class MDB2_nonstandard_pgsql extends MDB2_nonstandard { var $trigger_body = ''; function createTrigger($trigger_name, $table_name) { $this->trigger_body = 'EXECUTE PROCEDURE '.$trigger_name.'_func();'; $table_name = $this->db->quoteIdentifier($table_name); $sql = 'CREATE OR REPLACE FUNCTION '.$trigger_name.'_func() RETURNS trigger AS \' DECLARE id_number INTEGER; BEGIN SELECT INTO id_number id FROM '. $table_name .' WHERE id = NEW.id; RETURN NEW; END; \' LANGUAGE \'plpgsql\';'; $res = $this->db->exec($sql); if (PEAR::isError($res)) { return $res; } $query = 'CREATE TRIGGER '. $trigger_name .' AFTER UPDATE ON '. $table_name .' FOR EACH ROW ' .$this->trigger_body; return $this->db->exec($query); } function checkTrigger($trigger_name, $table_name, $def) { parent::checkTrigger($trigger_name, $table_name, $def); $this->test->assertEquals($this->trigger_body, $def['trigger_body']); } function dropTrigger($trigger_name, $table_name) { return $this->db->exec('DROP TRIGGER '.$trigger_name .' ON '. $table_name); } function createFunction($name) { $query = "CREATE FUNCTION $name (Decimal(6,2), Decimal(6,2)) RETURNS Decimal(6,2) AS 'select $1 + $2;' LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT"; return $this->db->exec($query); } function dropFunction($name) { return $this->db->exec('DROP FUNCTION '.$name.' (Decimal(6,2), Decimal(6,2))'); } } ?>