PDO::pgsqlLOBCreate

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

PDO::pgsqlLOBCreate — 새로운 대형 객체를 생성합니다.


설명

public PDO::pgsqlLOBCreate(): string

PDO::pgsqlLOBCreate()는 큰 개체를 만들고 해당 개체의 OID를 반환합니다. 그런 다음 PDO::pgsqlLOBOpen()을 사용하여 객체에서 스트림을 열어 데이터를 읽거나 쓸 수 있습니다. OID는 OID 유형의 열에 저장될 수 있으며 행이 임의로 커지지 않고 큰 개체를 참조하는 데 사용할 수 있습니다. 큰 개체는 PDO::pgsqlLOBUnlink()를 호출하여 제거될 때까지 데이터베이스에 계속 존재합니다.

큰 개체의 크기는 최대 2GB이지만 사용하기가 번거롭습니다. 데이터베이스에서 해당 OID를 참조하는 마지막 행을 삭제하기 전에 PDO::pgsqlLOBUnlink()가 호출되었는지 확인해야 합니다. 또한 큰 개체에는 액세스 제어가 없습니다. 대안으로, 바이트열 유형을 시도하십시오. 최신 버전의 PostgreSQL은 최대 1GB 크기의 바이트 열을 허용하고 최적의 행 크기를 위해 스토리지를 투명하게 관리합니다.

참고: 이 함수는 트랜잭션 내에서 호출되어야 합니다.


매개변수

PDO::pgsqlLOBCreate()는 매개변수를 사용하지 않습니다.


반환 값

성공하면 새로 생성된 대형 개체의 OID를 반환하고 실패하면 false를 반환합니다.


Examples

예제 #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();
?>
                  
                

기타