PgSQLIdGenerator.php

Go to the documentation of this file.
00001 <?php 00002 /* 00003 * $Id: PgSQLIdGenerator.php,v 1.5 2004/03/19 14:19:50 hlellelid Exp $ 00004 * 00005 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00006 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00007 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00008 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 00009 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00010 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00011 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00012 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00013 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00014 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00015 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00016 * 00017 * This software consists of voluntary contributions made by many individuals 00018 * and is licensed under the LGPL. For more information please see 00019 * <http://creole.phpdb.org>. 00020 */ 00021 00022 require_once 'creole/IdGenerator.php'; 00023 00031 class PgSQLIdGenerator implements IdGenerator { 00032 00034 private $conn; 00035 00041 public function __construct(Connection $conn) 00042 { 00043 $this->conn = $conn; 00044 } 00045 00049 public function isBeforeInsert() 00050 { 00051 return true; 00052 } 00053 00057 public function isAfterInsert() 00058 { 00059 return false; 00060 } 00061 00065 public function getIdMethod() 00066 { 00067 return self::SEQUENCE; 00068 } 00069 00073 public function getId($name = null) 00074 { 00075 if ($name === null) { 00076 throw new SQLException("You must specify the sequence name when calling getId() method."); 00077 } 00078 $rs = $this->conn->executeQuery("select nextval('" . $name . "')", ResultSet::FETCHMODE_NUM); 00079 $rs->next(); 00080 return $rs->getInt(1); 00081 } 00082 00083 } 00084

This file is part of the Creole[php5] library.


Copyright © 2004 Hans Lellelid  
Creole[php5] CVS