取消注册 ST_Geometry 列
如果独占使用 SQL 来与 PostgreSQL 或 SQLite 中的空间表进行交互,则可以在删除空间表前取消注册 ST_Geometry 列。否则,将会在 ST_Geometry 系统表中出现一条孤立记录。
在 PostgreSQL 中取消注册 ST_Geometry 列
在使用 SQL 删除包含注册 ST_Geometry 列的表时,使用 st_unregister_spatial_column 函数将其取消注册。
以下为 st_unregister_spatial_column 函数的语法:
st_unregister_spatial_column(
'<database_name>',
'<schema_name>',
'<table_name>',
'<spatial_column_name>'
);
步骤:
- 打开命令提示符或 shell 提示符。
- 以表所有者的身份登录到 SQL 编辑器,然后连接到要取消注册 ST_Geometry 列的表所在的数据库。
此例中,用户 cleo 连接到数据库 spatdat。
psql spatdat cleo
- 在 SQL 提示符处调用 st_unregister_spatial_column 函数。
此处取消注册了方案 cleo 中 waypoints 表的 geo 列:
SELECT sde.st_register_spatial_column( 'spatdat', 'cleo', 'waypoints', 'geo' );
只有表的所有者可以取消注册空间列。
在 SQLite 中取消注册 ST_Geometry 列
在使用 SQL 删除包含注册 ST_Geometry 列的表时,使用 DropGeometryMetadata 将其取消注册。
DropGeometryMetadata 的语法如下:
DropGeometryMetadata(
<'main'|NULL>,
<table_name>
);
当通过 SQL 客户端连接 SQLite 时,您将会连接到主数据库。您可以指定主数据库或使用空值,使用空值时会假设您将连接到主数据库。
步骤:
- 打开 SQL 编辑器并连接到数据库。
- 如果尚未 加载 ST_Geometry 库,那么请现在加载。
- 使用 DropGeometryMetadata 取消注册 ST_Geometry 列。
在本例中,取消注册了 hazardous_sites 表中的 ST_Geometry 列。
SELECT DropGeometryMetadata( 'main', 'hazardous_sites' );
5/25/2014