윈 토토 : 문서 : 9.4 : | |||
---|---|---|---|
토토 사이트 순위 : 문서 : 9.4 : ISN | PostgreSQL : 문서 : 9.4 : 추가 제공 배트맨 토토 | 부록 F. 추가 공급 모듈 | PostgreSQL : 문서 : 9.4 : 토토 사이트 |
thelo모듈은 대형 개체 관리 (LOS 또는 블로브라고도 함)를 지원합니다. 여기에는 데이터 유형이 포함lo및 트리거lo_manage
.
JDBC 드라이버의 문제 중 하나 (그리고 이것은 ODBC 드라이버에도 영향을 미치는 것도), 사양은 블로브 (이진 큰 객체)에 대한 참조가 테이블 내에 저장되고 해당 항목이 변경되면 관련 블로브가 데이터베이스에서 삭제된다고 가정합니다.
as와이즈 토토스탠드, 이것은 발생하지 않습니다. 큰 물체는 그 자체로 물체로 취급됩니다.
이제 이것은 괜찮습니다와이즈 토토-특이 적 애플리케이션이지만 JDBC 또는 ODBC를 사용하는 표준 코드는 객체를 삭제하지 않아 고아 객체를 초래하지 않습니다.
thelo모듈을 사용하면 LO 참조 열이 포함 된 테이블에 트리거를 연결 하여이 문제를 해결할 수 있습니다. 트리거는 본질적으로 a를 수행합니다.lo_unlink
큰 객체를 참조하는 값을 삭제하거나 수정할 때마다. 이 트리거를 사용하면 트리거 제어 열에서 참조되는 큰 객체에 대한 데이터베이스 참조가 하나만 있다고 가정합니다!
모듈도 데이터 유형을 제공합니다lo, 이것은 실제로의 도메인 일뿐입니다.OID타입. 이것은 다른 것들의 OID와 큰 객체 참조를 고정하는 데이터베이스 열을 차별화하는 데 유용합니다.lo트리거를 사용하려면 유형이지만 데이터베이스의 열이 트리거로 관리하는 큰 개체를 나타내는 것을 추적하는 데 편리 할 수 있습니다. 또한 사용하지 않으면 ODBC 운전자가 혼란스러워한다는 소문이 있습니다loBlob Columns.
여기 사용의 간단한 예가 있습니다 :
테이블 이미지 생성 (제목 텍스트, 래스터 LO);
큰 객체에 대한 고유 한 참조가 포함 된 각 열에 대해 생성업데이트 또는 삭제 전트리거, 열 이름을 유일한 트리거 인수로 제공하십시오. 또한 트리거를 제한하여를 사용하여 열의 업데이트에서만 실행하도록 제한 할 수 있습니다.업데이트 전 column_name. 여러분이 필요하다면lo같은 테이블에있는 열, 각각의 트리거에 대해 별도의 트리거를 만듭니다. 같은 테이블의 각 트리거에 다른 이름을 제시하는 것을 기억하십시오.
테이블을 삭제하면 트리거가 실행되지 않으므로 포함 된 모든 객체가 여전히 고아됩니다. 앞서 앞서 피할 수 있습니다.드롭 테이블with삭제테이블.
Truncate동일한 위험이 있습니다.
당신이 이미 가지고 있거나 가지고 있거나 의심되는 경우, 고아가 큰 물건을 참조하십시오Vacuumlo청소에 도움이되는 모듈. 실행하는 것이 좋습니다Vacuumlo때때로 가끔 뒷면으로lo_manage
트리거.
일부 프론트 엔드는 자신의 테이블을 만들 수 있으며 관련 트리거를 생성하지 않습니다. 또한 사용자는 방아쇠를 만들기 위해 기억하거나 알고 있지 않을 수 있습니다.
피터 마운트<peter@retep.org.uk