pg_last_oid

直近の行のオブジェクト ID を返す

説明

stringintfalse pg_last_oid(PgSql\Result $result)

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_querypg_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);
?>

参考

  • pg_query
  • pg_result_status