ST_Geometry 列の登録解除

PostgreSQL または SQLite の空間テーブルを操作するのに SQL だけを使用している場合、空間テーブルを削除する前に 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. コマンド プロンプトまたはシェル プロンプトを開きます。
  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 に接続する場合、main に接続しています。main を指定するか、main に接続することを想定している NULL を使用できます。

手順:
  1. SQL エディタを開き、データベースに接続します。
  2. ST_Geometry ライブラリをまだ読み込んでいない場合は、ここで読み込みます。
  3. DropGeometryMetadata を使用して、ST_Geometry 列の登録を解除します。

    この例では、hazardous_sites テーブルの ST_Geometry 列が登録解除されます。

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

5/25/2014