array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.pg-last-oid.php', 1 => 'pg_last_oid', ), 'up' => array ( 0 => 'ref.pgsql.php', 1 => 'PostgreSQL 関数', ), 'prev' => array ( 0 => 'function.pg-last-notice.php', 1 => 'pg_last_notice', ), 'next' => array ( 0 => 'function.pg-lo-close.php', 1 => 'pg_lo_close', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/pgsql/functions/pg-last-oid.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_last_oid — 直近の行のオブジェクト ID を返す
pg_last_oid() は、挿入された行に割り当てられた OID を取得します。
OID フィールドは PostgreSQL 7.2 からはオプションとなり、 PostgreSQL 8.1 ではデフォルトで存在しません。OID フィールドが テーブルに存在しない場合、プログラマは pg_result_status() を使用して挿入が成功したことを 確かめる必要があります。
挿入された行の SERIAL
フィールドの値を取得するには、
PostgreSQL の CURRVAL
関数を使用してシーケンス内で
直近に要求された値を取得する必要があります。シーケンス名がわからない
場合は、PostgreSQL 8.0 の関数 pg_get_serial_sequence
が必要になります。
PostgreSQL 8.1 には LASTVAL
関数が存在し、セッション内で
直近に使用されたシーケンスの値を返します。これを用いれば、シーケンスや
テーブルやカラムの名前を指定する必要がなくなります。
注意:
この関数は、以前は pg_getlastoid() と呼ばれていました。
result
pg_query()、pg_query_params() や (様々な関数がありますが、特に) pg_execute() が返した PgSql\Result クラスのインスタンス。
指定された connection
で、直近に挿入された行に
割り当てられた OID を数値または文字列で返します。エラー時や有効な OID のない場合に
false
を返します。
バージョン | 説明 |
---|---|
8.1.0 |
result は、PgSql\Result
クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、リソース を期待していました。
|
例1 pg_last_oid() の例
<?php
// データベースに接続します
pg_connect("dbname=mark host=localhost");
// サンプルのテーブルを作ります
pg_query("CREATE TABLE test (a INTEGER) WITH OIDS");
// データを追加します
$res = pg_query("INSERT INTO test VALUES (1)");
$oid = pg_last_oid($res);
?>