存档表
启用版本化表或要素类的存档功能后,会创建一个存档类。此类为该业务表的副本,它包含业务表中的所有字段,另外还包括三个新字段:GDB_FROM_DATE
、GDB_TO_DATE
和 GDB_ARCHIVE_OID
。
命名:
存档类表的名称是原业务表名称后加一条下划线和 H。如,业务表为FILETEST则存档表就为FILETEST_H。
创建测试表-FILETEST
通过arcmap创建一个要素类FILETEST。
然后添加几条数据:
INSERT INTO SDE.FILETEST(objectid,shape)VALUES(1, sde.st_geometry('point(1 2)',4326));
INSERT INTO SDE.FILETEST(objectid,shape)VALUES(2, sde.st_geometry('point(3 4)',4326));
数据存档
既可以对非版本化数据进行存档存档也可以对版本化数据进行存档
版本化数据存档
当启用存档时,指定类的 DEFAULT 版本的所有行都将按同一时间戳被复制到存档类。所有行的 gdb_from_date 属性都带有启用存档操作的日期和时间的时间戳。所有行的 gdb_to_date 属性都带有 12/31/9999 时间戳(无论何时只要一个属性具有 gdb_to_date 12/31/9999,它都是 DEFAULT 版本中对象的当前表示)。
为FILETEST注册版本,再启用归档:
这时,空间数据将生成一个存档类:FILETEST_H:
当将编辑内容保存或提交到 DEFAULT 版本时,地理数据库会自动将更改存档到存档类。
再插入一条数据:
INSERT INTO SDE.FILETEST(objectid,shape)VALUES(3, sde.st_geometry('point(3 3)',4326));
这时查看FILETEST_H,并没有归档,在arcmap中启用编辑来添加一个点,保存并停止编辑,这是存档FILETEST_H也有了相应的记录:
在 DEFAULT 版本中更新的要素通过将 gdb_to_date 属性值设置为存档操作的时间戳来更新存档类中的关联行,并插入带 gdb_from_date 属性值和 gdb_to_date 属性值的新行,其中 gdb_from_date 属性值被设置为存档操作的时间戳,gdb_to_date 属性值被设置为 12/31/9999。
通过arcmap将objectid为2的点移动位置:
保存并停止编辑,查看FILETEST_H:
在 DEFAULT 版本中删除的要素通过将 gdb_to_date 属性值设置为等于存档操作的时间戳来更新存档类中的关联行。并且存档类中不在有它的当前版本。
通过arcmap删除objectid为2的点,查看FILETEST_H:
更新存档表在单个数据库事务中执行。如果在事务过程中遇到了错误,则回滚整个存档操作,因而也不会完成保存或提交操作。一旦改正了错误,就可以再次执行保存或提交操作。
对于每个存档操作,DEFAULT 历史标记使用存档操作的值进行更新。当使用历史版本并选择 DEFAULT 历史标记时,这确保存档类的当前表示等同于事务 DEFAULT 版本中的版本化类的表示。
访问存档类实际上可以比使用等同的版本化类占用较少的数据库资源。
作者:禅楼望月
出处:http://www.cnblogs.com/yaoyinglong
如果,您认为阅读这篇博文让您有些收获,不妨点击一下右下角的【推荐】
如果,您希望这篇博文也能帮助到其他人,不妨点击一下右边的【分享到…】
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】
如果,您对我的博客内容感兴趣,请继续关注我的后续博客,我是【禅楼望月】
本文版权归作者和博客园共有,欢迎转载,但请注明出处,且在文章页面明显位置给出原文连接。