PDO_PGSQL DSN
PDO::pgsqlLOBOpen
PostgreSQL (PDO)
PHP Manual

# PDO::pgsqlLOBCreate

(PHP 5 >= 5.1.2, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBCreate — 새 라지 오브젝트를 생성합니다

### 설명

string PDO::pgsqlLOBCreate ( void )

PDO::pgsqlLOBCreate()는 라지 오브젝트를 만들고 해당 오브젝트의 OID를 반환합니다. PDO::pgsqlLOBOpen()으로 해당 오브젝트에 스트림을 열어서 읽고 쓰기를 할 수 있습니다. OID는 OID 형식의 컬럼에 저장하여, 열이 마음대로 늘어나는 일이 없도록 참조하여 사용할 수 있습니다. 라지 오브젝트는 PDO::pgsqlLOBUnlink()를 호출하여 제거할 때 까지 계속해서 데이터베이스에 존재합니다.

라지 오브젝트는 2GB 크기까지 사용할 수 있지만, 사용하기 편하지 않습니다; PDO::pgsqlLOBUnlink()를 제대로 호출한 후 데이터베이스에서 해당 OID를 참조하는 줄을 삭제해야 합니다. 추가로, 라지 오브젝트는 접근 제어가 없습니다. bytea 컬럼형으로 대체할 수 있습니다; PostgreSQL 최근 버전에선 bytea 컬럼을 1GB까지 사용할 수 있고, 스토리지를 적절한 행 크기로 관리합니다.

> Note: 이 함수는 트랙젝션 안에서 호출해야 합니다.

### 인수

PDO::pgsqlLOBCreate()는 인수가 없습니다.

### 반환값

성공시엔 새로 만들어진 라지 오브젝트의 OID, 실패시엔 `FALSE`를 반환합니다.

### 예제

Example #1 PDO::pgsqlLOBCreate() 예제

이 예제는 새 라지 오브젝트를 만들고 파일 내용을 복사해 넣습니다. 그리고 OID는 테이블에 저장합니다.

`<?php
$db = new PDO('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$oid = $db->pgsqlLOBCreate();
$stream = $db->pgsqlLOBOpen($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(array($some_id, $oid));
$db->commit();
?>`

### 참고

- PDO::pgsqlLOBOpen() - 존재하는 라지 오브젝트 스트림을 엽니다
- PDO::pgsqlLOBUnlink() - 라지 오브젝트를 제거합니다
- pg_lo_create() - Create a large object

PDO_PGSQL DSN
PDO::pgsqlLOBOpen
PostgreSQL (PDO)
PHP Manual