이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다스포츠 토토 : 문서 : 17 : F.21. LO - 큰 개체 관리버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.20. 봐라

thelo모듈은 대형 개체 관리 (LOS 또는 블로브라고도 함)를 지원합니다. 여기에는 데이터 유형이 포함lo및 트리거lo_manage.

F.20.1. 이론적 해석

JDBC 드라이버의 문제 중 하나 (그리고 이것은 ODBC 드라이버에도 영향을 미치는 것도), 사양은 블로브 (이진 큰 객체)에 대한 참조가 테이블 내에 저장되고 해당 항목이 변경되면 관련 블로브가 데이터베이스에서 삭제된다고 가정합니다.

as와이즈 토토스탠드, 이것은 발생하지 않습니다. 큰 물체는 그 자체로 물체로 취급됩니다.

이제 이것은 괜찮습니다와이즈 토토-특이 적 애플리케이션이지만 JDBC 또는 ODBC를 사용하는 표준 코드는 객체를 삭제하지 않아 고아 객체를 초래하지 않습니다.

thelo모듈을 사용하면 LO 참조 열이 포함 된 테이블에 트리거를 연결 하여이 문제를 해결할 수 있습니다. 트리거는 본질적으로 a를 수행합니다.lo_unlink큰 객체를 참조하는 값을 삭제하거나 수정할 때마다. 이 트리거를 사용하면 트리거 제어 열에서 참조되는 큰 객체에 대한 데이터베이스 참조가 하나만 있다고 가정합니다!

모듈도 데이터 유형을 제공합니다lo, 이것은 실제로의 도메인 일뿐입니다.OID타입. 이것은 다른 것들의 OID와 큰 객체 참조를 고정하는 데이터베이스 열을 차별화하는 데 유용합니다.lo트리거를 사용하려면 유형이지만 데이터베이스의 열이 트리거로 관리하는 큰 개체를 나타내는 것을 추적하는 데 편리 할 수 ​​있습니다. 또한 사용하지 않으면 ODBC 운전자가 혼란스러워한다는 소문이 있습니다loBlob Columns.

F.20.2. 사용 방법

여기 사용의 간단한 예가 있습니다 :

테이블 이미지 생성 (제목 텍스트, 래스터 LO);

큰 객체에 대한 고유 한 참조가 포함 된 각 열에 대해 생성업데이트 또는 삭제 전트리거, 열 이름을 유일한 트리거 인수로 제공하십시오. 또한 트리거를 제한하여를 사용하여 열의 업데이트에서만 실행하도록 제한 할 수 있습니다.업데이트 전 column_name. 여러분이 필요하다면lo같은 테이블에있는 열, 각각의 트리거에 대해 별도의 트리거를 만듭니다. 같은 테이블의 각 트리거에 다른 이름을 제시하는 것을 기억하십시오.

F.20.3. 제한

  • 테이블을 삭제하면 트리거가 실행되지 않으므로 포함 된 모든 객체가 여전히 고아됩니다. 앞서 앞서 피할 수 있습니다.드롭 테이블with삭제테이블.

    Truncate동일한 위험이 있습니다.

    당신이 이미 가지고 있거나 가지고 있거나 의심되는 경우, 고아가 큰 물건을 참조하십시오Vacuumlo청소에 도움이되는 모듈. 실행하는 것이 좋습니다Vacuumlo때때로 가끔 뒷면으로lo_manage트리거.

  • 일부 프론트 엔드는 자신의 테이블을 만들 수 있으며 관련 트리거를 생성하지 않습니다. 또한 사용자는 방아쇠를 만들기 위해 기억하거나 알고 있지 않을 수 있습니다.