版本化视图将数据库视图、存储过程、触发器和函数整合在一起,用以通过结构化查询语言 (SQL) 读取或编辑地理数据库表或要素类中的版本化数据。当查询版本化视图时,您可以查看基表(业务表)中的数据以及存储在增量表中的编辑内容。当您使用 SQL 编辑版本化视图时,版本化视图使用的触发器将对增量表进行更新。
与数据库或空间视图不同,版本化视图并不用于更改表的方案,也不用于限制访问,而是用于快速访问特定版本的表或要素类。因此,在创建版本化视图时不需要指定 where 子句。结果是版本化视图包含与其所代表的基表相同的列和行。
版本化视图工作原理摘要
每个版本化表或要素类都具有关联的增量表,其中记录了对其所做的编辑。通过版本化视图访问版本化表或要素类时,基表中的所有记录都被选中并与增量表中的记录合并以构建视图,该视图包括在指定版本上下文中对基表进行的所有更改。
如果没有版本化视图,不支持地理数据库版本化的应用程序只能直接查询版本化要素类或表的基表,并且与增量表没有任何连接。版本化视图对这些应用程序很有用,因为应用程序可通过它访问增量表中的数据。
版本化视图不使用在地理数据库级别实现的功能。因此,版本化视图不应用于编辑参与地理数据库行为的数据。有关详细信息,请参阅可使用 SQL 编辑何种数据类型。
如果在未设置版本和状态的情况下查询版本化视图,将引用 DEFAULT 版本的当前状态。如果其他用户正在提交对 DEFAULT 版本的编辑(从而更改 DEFAULT 版本引用的状态),您的后续查询将看到 DEFAULT 版本的最新状态及其编辑。
如果使用 set_current_version 函数或过程(名称会根据您的数据库管理系统而稍有不同)指定要查询的版本,则您将引用的状态是您设置版本时指定版本所引用的状态。
例如,如果运行 set_current_version 函数将版本设置为名为 decedits 的命名版本,并且 decedits 指向状态树中的状态 4,则您对 decedits 的所有后续 SQL 查询都将看到状态 4 的数据,即使其他用户正在提交对 decedits 的编辑而导致 decedits 的当前状态变为状态 25。要看到状态 25,应再次运行 set_current_version 函数将版本设置为 decedits 的当前状态。
版本化视图创建
在 ArcGIS 10.1 或更高版本中,会自动为注册为版本的表或要素类创建版本化视图。如果将要素数据集注册为版本,则会针对该要素数据集中的每个要素类创建一个版本化视图。创建的视图的名称与表或要素类的名称相同,但会在末尾添加 _evw。
如果在 ArcGIS 10 或更早版本中将数据注册为版本化数据,则可以通过 ArcGIS for Desktop 10.1 或更高版本创建版本化视图,方法是右键单击表、要素类或要素数据集,指向管理并单击启用 SQL 访问。