pg_last_notice

PostgreSQL サーバーからの直近の通知メッセージを返す

説明

arraystringbool pg_last_notice(PgSql\Connection $connection, int $mode = PGSQL_NOTICE_LAST)

pg_last_notice は、connection で指定した PostgreSQL サーバーからの直近の通知メッセージを返します。 たとえば、テーブルに SERIAL カラムを作成する場合などに PostgreSQL サーバーは通知メッセージを送信します。

pg_last_notice でトランザクションに関連する通知 メッセージがあるかないかをチェックすることで、無意味なクエリの発行を 避けることが可能です。

php.inipgsql.ignore_notice に 1 を指定することで、通知メッセージの追跡をしないようにすることが可能です。

php.inipgsql.log_notice に 0 を指定することで、通知メッセージをログに記録しないようにすることが可能です。 pgsql.ignore_notice が 0 に設定されていない限り、 通知メッセージをログに記録することはできません。

パラメータ

connection

PgSql\Connection クラスのインスタンス。

mode

直近の通知を返す PGSQL_NOTICE_LAST、 すべての通知を返す PGSQL_NOTICE_ALL、 または通知をクリアする PGSQL_NOTICE_CLEAR のいずれか

戻り値

PGSQL_NOTICE_LAST 使用時は、 指定された connection の直近の通知を含む stringPGSQL_NOTICE_ALL 使用時は arrayPGSQL_NOTICE_CLEAR 使用時は bool を返します。

変更履歴

バージョン 説明
8.1.0 connection は、PgSql\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
7.1.0 mode パラメータが追加されました。

例1 pg_last_notice の例

<?php
  $pgsql_conn 
pg_connect("dbname=mark host=localhost");
  
  
$res pg_query("CREATE TABLE test (id SERIAL)");
  
  
$notice pg_last_notice($pgsql_conn);
  
  echo 
$notice;
?>

上の例の出力は以下となります。

CREATE TABLE will create implicit sequence "test_id_seq" for "serial" column "test.id"

参考

  • pg_query
  • pg_last_error