Если вы используете SQL исключительно для взаимодействия с пространственными таблицами в PostgreSQL или SQLite, отмените регистрацию столбца ST_Geometry перед удалением пространственной таблицы. В противном случае в системной таблице ST_Geometry останется висячая строка.
Отмена регистрации столбца ST_Geometry в PostgreSQL
Перед тем как воспользоваться 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 Prompt запустите функцию st_unregister_spatial_column.
Регистрация столбца geo таблицы waypoints в схеме cleo отменена:
SELECT sde.st_register_spatial_column( 'spatdat', 'cleo', 'waypoints', 'geo' );
Только владелец таблицы может отменить регистрацию пространственного столбца.
Отмена регистрации столбца ST_Geometry в SQLite
Перед использованием SQL для удаления таблицы, содержащей зарегистрированный столбец ST_Geometry, воспользуйтесь DropGeometryMetadata для отмены его регистрации.
Далее представлен синтаксис DropGeometryMetadata:
DropGeometryMetadata(
<'main'|NULL>,
<table_name>
);
При подключении к SQLite через клиент SQL вы подключаетесь к основной базе. Вы можете указать основную или использовать NULL, что означает, что вы подключаетесь к основной.
- Откройте редактор SQL и подключитесь к базе данных.
- Если вы еще не загрузили библиотеку ST_Geometry, сделайте это.
- Воспользуйтесь DropGeometryMetadata для отмены регистрации столбца ST_Geometry.
В данном примере отменена регистрация столбца ST_Geometry в таблице hazardous_sites.
SELECT DropGeometryMetadata( 'main', 'hazardous_sites' );