可以使用数据库管理系统的原生 SQL 从企业级地理数据库中的表和要素类(统称为数据集)读取数据。还可以使用 SQL 对存储在企业级地理数据库中的简单数据集插入、删除和更新值。
对地理数据库数据集执行 SQL 时,也是在基表(或业务表)中查询数据。如果所查询的数据集满足以下条件,则查询基表就足以查询到数据,并且可以使用 SQL 在基表中更新数据、插入记录或删除记录:
- 数据集不参与地理数据库功能,例如注记、复制、网络、宗地结构、关系类、逻辑示意图数据集、子类型、属性域、地形或拓扑。
- 数据集未注册为版本。
- 数据集未启用存档。
- 数据集不包含二进制几何数据类型或 ArcSDE XML 数据类型列。
以下部分介绍数据集不满足这些条件时应采取的操作。
数据集参与地理数据库功能
如果要访问的数据参与了地理数据库功能,您所构造的查询必须包含所需的关联表,然后使用正确的列将这些表连接起来以便查询关联表中的信息。
可使用 Is_Simple 函数确定数据集是否参与某些地理数据库功能。如果 Is_Simple 返回 False,则可对数据集执行 SQL SELECT 语句,但请勿使用 SQL 编辑数据集。
数据集已注册为版本
如果数据集已注册为与传统版本配合使用,可使用版本化视图查询该数据集并查看基表、添加表和删除表中的数据,而无需编写复杂的连接语句。在将数据集注册为版本化时会创建版本化视图。
如果要使用 SQL 编辑传统版本化数据集,必须通过版本化视图进行编辑。这会将编辑内容写入添加表和删除表,并在插入记录时填充 ObjectID 字段。
可以使用 Is_Versioned 函数确定是否注册数据集以参与传统版本化。如果注册数据集,请使用 Version_View_Name 函数来确定版本化视图的名称。
如果将数据注册为使用分支版本,请勿使用 SQL 对其进行编辑。
数据集未注册为版本但已用于存档
如果未注册数据集以参与传统版本化,但已用于存档,则在启用存档时将创建存档视图。
如果要使用 SQL 编辑已用于存档的非版本化数据集,必须通过存档视图进行编辑。执行此操作将自动更新在更新要素或记录时追踪的字段以及对象 ID 字段。
如果 Is_Versioned 函数返回 False 并且您确定未注册该数据集以参与分支版本,请使用 Is_Archive_Enabled 函数来确定您的数据集是否已启用存档。如果将其用于存档,使用 Archive_View_Name 函数可确定存档视图的名称,并可使用将该名称通过 SQL 编辑数据集。
数据集包含二进制几何或 ArcSDE XML 列
如果要访问的数据使用二进制几何存储或 ArcSDE XML,您所构造的查询必须包含所需的关联表,然后使用正确的列将这些表连接起来以便查询关联表中的信息。
请勿使用 SQL 编辑包含二进制几何存储或 ArcSDE XML 数据类型列的数据集。