取消注册 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>'
);

步骤:
  1. 打开命令提示符或 shell 提示符。
  2. 以表所有者的身份登录到 SQL 编辑器,然后连接到要取消注册 ST_Geometry 列的表所在的数据库。

    此例中,用户 cleo 连接到数据库 spatdat。

    psql spatdat cleo

  3. 在 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 时,您将会连接到主数据库。您可以指定主数据库或使用空值,使用空值时会假设您将连接到主数据库。

步骤:
  1. 打开 SQL 编辑器并连接到数据库。
  2. 如果尚未 加载 ST_Geometry 库,那么请现在加载。
  3. 使用 DropGeometryMetadata 取消注册 ST_Geometry 列。

    在本例中,取消注册了 hazardous_sites 表中的 ST_Geometry 列。

    SELECT DropGeometryMetadata(
     'main',
     'hazardous_sites'
    );
    

5/25/2014