パーティショニングを行っているテーブルで「子テーブルの存在チェックを行い、存在すれば処理を実施する」というを実現する方法です。
PostgreSQL のクエリ単体では処理分岐の実現は難しく、PHP で記述した形です。
ここでは「information_schema.tables」を用いて、対象の子テーブルのカラムなどの情報を取得し、情報があればテーブルが存在すると判断して処理を進めています。
明示していないですが、情報がなければテーブルは存在しないと判断し、処理は行いません。
PHPのエラーキャッチなどは上記には記載していないため、logging や catch (PDOException $e) などを利用して、エラーメッセージの出力を行い、異常終了時における対応判断が可能な情報を出力するようにしてください。
以上
PostgreSQL のクエリ単体では処理分岐の実現は難しく、PHP で記述した形です。
ここでは「information_schema.tables」を用いて、対象の子テーブルのカラムなどの情報を取得し、情報があればテーブルが存在すると判断して処理を進めています。
明示していないですが、情報がなければテーブルは存在しないと判断し、処理は行いません。
$pdo = new PDO('pgsql:dbname=<DB名>;host=<IPアドレス>', port=<ポート番号>, 'ユーザー名', 'パスワード');
$sql = "SELECT * FROM information_schema.tables WHERE table_name = <テーブル名>;";
$res = $pdo->query($sql);
## デバッグ確認用
#var_dump($res->rowCount());
$res = $res->rowCount();
if($res == 1){
$ret = <対象処理>;
$res = $pdo->query($ret);
}
PHPのエラーキャッチなどは上記には記載していないため、logging や catch (PDOException $e) などを利用して、エラーメッセージの出力を行い、異常終了時における対応判断が可能な情報を出力するようにしてください。
以上