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>'
);
手順:
- コマンド プロンプトまたはシェル プロンプトを開きます。
- 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 に接続する場合、main に接続しています。main を指定するか、main に接続することを想定している NULL を使用できます。
手順:
- SQL エディタを開き、データベースに接続します。
- ST_Geometry ライブラリをまだ読み込んでいない場合は、ここで読み込みます。
- DropGeometryMetadata を使用して、ST_Geometry 列の登録を解除します。
この例では、hazardous_sites テーブルの ST_Geometry 列が登録解除されます。
SELECT DropGeometryMetadata( 'main', 'hazardous_sites' );
5/25/2014