6.1.?原理

JDBC(java数据库连接)驱动的问题之一是规范假定对BLOB(二进制大对象)的引用被存储在一个表中,如果该表被改变,相关的BLOB会被从数据库删除;ODBC(开放数据库连接)驱动也存在这样的问题。

但对于UXDB来说这并不会发生。大对象被当做自主的对象,表对象通过OID引用大对象,可以有多个表对象通过OID引用同一个大对象,因此系统不会因为表对象的改变或者删除而删除大对象。但是由于使用JDBC或ODBC的标准代码不会删除大对象,从而导致孤立大对象—不被任何表引用的大对象,会始终占据磁盘空间。

lo模块允许通过附加一个触发器到包含LO引用列的表来修复这种问题。该触发器本质上只是在删除或修改一个引用大对象的值时做lo_unlink。使用这个触发器时,触发器控制的列中的大对象必须只有一个数据库引用。

这个模块也提供了一种数据类型lo,是oid类型的一个域。有助于区分包含大对象引用的数据库列和包含其他类的数据库列。并非必须使用lo类型来使用触发器,但是用它来追踪数据库中哪些列表示用触发器管理的大对象非常方便。

XML 地图 | Sitemap 地图