Pdo\Pgsql::lobCreate 新しいラージオブジェクトを作成する &reftitle.description; public stringfalsePdo\Pgsql::lobCreate Pdo\Pgsql::lobCreate は、 ラージオブジェクトを作成してその OID を返します。 このオブジェクトに対するデータの読み書きは、 Pdo\Pgsql::lobOpen を使用します。 OID は OID 型のカラムに格納され、 ラージオブジェクトを参照するために使用されます。 これにより、行のサイズがどんどん拡大してしまうことを防ぎます。 ラージオブジェクトは Pdo\Pgsql::lobUnlink を コールして削除するまで、データベースに残り続けます。 ラージオブジェクトの取り扱いは複雑です。 オブジェクトの OID を参照している行をデータベースから削除する際には、 必ず事前に PDO::pgsqlLOBUnlinkをコールしなければなりません。 そうしないと、どこからも参照されないラージオブジェクトが、サーバーに残り続けてしまうでしょう。 さらに、ラージオブジェクトにはアクセス権を設定できません。 代替として、bytea 型のカラムも検討ください。最近のバージョンの PostgreSQL では bytea 型のカラムに最大 1GBまで保存でき、行サイズを最適化したうえでデータを透過的に扱うことができます。 この関数を含むラージオブジェクトへの全ての操作は トランザクション内で行わなければなりません。 &reftitle.parameters; &no.function.parameters; &reftitle.returnvalues; 成功した場合、新しく作成されたラージオブジェクトの OID、 &return.falseforfailure;。 &reftitle.examples; <methodname>Pdo\Pgsql::lobCreate</methodname> の例 この例では、新しいラージオブジェクトを作成し、 ファイルの内容をそこにコピーします。その後、 OID がテーブルに保存されます。 setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->beginTransaction(); $oid = $db->lobCreate(); $stream = $db->lobOpen($oid, 'w'); $local = fopen($filename, 'rb'); stream_copy_to_stream($local, $stream); $local = null; $stream = null; $stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)"); $stmt->execute([$some_id, $oid]); $db->commit(); ?> ]]> &reftitle.seealso; Pdo\Pgsql::lobOpen Pdo\Pgsql::lobUnlink pg_lo_create pg_lo_open