2024 日本 PHP 研討會

PDO::pgsqlLOBCreate

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

PDO::pgsqlLOBCreate Pdo\Pgsql::lobCreate() 的別名

說明

public PDO::pgsqlLOBCreate(): string

此方法是 Pdo\Pgsql::lobCreate() 的別名。

新增註釋

使用者貢獻的註釋 2 則註釋

Hayley Watson
6 年前
如果單一欄位儲存的二進位資料不太可能超過 1GB,那麼使用一般的 bytea 資料類型就夠了,不必使用大型物件 (LOB)。

它們不會使資料表膨脹,因為 PostgreSQL 會將較大的位元組串流儲存在資料表外部(如同大型物件儲存的作法,只是透明化進行),而且會在有幫助的情況下進行壓縮,同時保留所有二進位字串函式和運算子。
mauroi at digbang dot com
18 年前
我認為,處理大型物件刪除動作有比這裡建議的更好的方法。程式設計師很容易忘記取消大型物件的連結。使用以下觸發程序,就不需要程式設計師進行任何操作。
順帶一提,bytea 欄位的一個問題是,當您查詢資料庫並要求該欄位時,資料實際上會被擷取。當您查詢 oid 時,只會擷取 oid,然後您可以隨時開啟大型物件(如果需要的話)。

CREATE OR REPLACE FUNCTION oidtable_after_update_delete()
RETURNS "trigger" AS
$BODY$
BEGIN
IF (TG_OP = 'UPDATE') THEN
IF (OLD.oidfield = NEW.oidfield) OR (OLD.oidfield IS NULL) THEN
RETURN NEW;
END IF;
END IF;
IF (EXISTS (SELECT 1 FROM pg_largeobject WHERE loid = OLD.oidfield)) THEN
PERFORM LO_UNLINK (OLD.oidfield);
END IF;
RETURN NEW;
END IF;
$BODY$
END;

LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER oidtable_after_update_delete
AFTER UPDATE OR DELETE
ON oidtable
FOR EACH ROW
To Top