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

F.20. 봐라

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

F.20.1. 이론적 해석

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

as사설 토토스탠드, 이것은 발생하지 않습니다. 큰 물체는 그 자체로 물체로 취급됩니다. 테이블 항목은 OID로 큰 객체를 참조 할 수 있지만 동일한 큰 오브젝트 OID를 참조하는 여러 테이블 항목이있을 수 있으므로 시스템은 그러한 항목을 변경하거나 제거하기 때문에 큰 객체를 삭제하지 않습니다..

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

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

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

F.20.2. 사용 방법

여기에 간단한 예제가 있습니다 :

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

업데이트 전에 Trigger T_Raster를 작성하거나 이미지에서 삭제하십시오
    각 행에 대해 execute function lo_manage (래스터);

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

F.20.3. 제한

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

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

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

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

F.20.4. 작가

Peter Mount