Namn

AddGeometryColumn — Lägger till en geometrikolumn i en befintlig tabell.

Synopsis

text AddGeometryColumn(varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);

text AddGeometryColumn(varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);

text AddGeometryColumn(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);

Beskrivning

Lägger till en geometrikolumn i en befintlig tabell med attribut. Schema_name är namnet på tabellschemat. Srid måste vara en heltalsreferens till en post i tabellen SPATIAL_REF_SYS. Type måste vara en sträng som motsvarar geometritypen, t.ex. "POLYGON" eller "MULTILINESTRING". Ett fel uppstår om schemanamnet inte finns (eller inte är synligt i den aktuella sökvägen) eller om den angivna SRID:en, geometritypen eller dimensionen är ogiltig.

Ändrad: 2.0.0 Den här funktionen uppdaterar inte längre geometry_columns eftersom geometry_columns är en vy som läser från systemkataloger. Som standard skapar det inte heller begränsningar, utan använder istället det inbyggda typmodifieringsbeteendet för PostgreSQL. Så till exempel att bygga en wgs84 POINT-kolumn med den här funktionen motsvarar nu: ALTER TABLE some_table ADD COLUMN geom geometry (Point,4326);

Ändrad: 2.0.0 Om du vill ha det gamla beteendet för begränsningar, använd standardvärdet use_typmod, men sätt det till false.

Ändrad: 2.0.0 Vyer kan inte längre registreras manuellt i geometry_columns, men vyer som är byggda mot geometri typmod-tabellgeometrier och används utan omslagsfunktioner kommer att registrera sig korrekt eftersom de ärver typmod-beteendet för sin överordnade tabellkolumn. Vyer som använder geometrifunktioner som matar ut andra geometrier måste castas till typmod-geometrier för att dessa vygeometrikolumner ska registreras korrekt i geometry_columns. Se Avsnitt 4.6.3, ”Manuell registrering av geometrikolumner”.

Denna metod implementerar OGC:s implementeringsspecifikation för enkla funktioner för SQL 1.1.

Denna funktion stöder 3d och kommer inte att tappa z-index.

Denna metod stöder cirkulära strängar och kurvor.

Förbättrad: 2.0.0 use_typmod-argumentet infördes. Standard är att skapa typmod-geometrikolumn istället för begränsningsbaserad.

Exempel

Det här exemplet skapar ett schema för att lagra data.

Kod
CREATE SCHEMA my_schema;

Skapa en enkel PostgreSQL-tabell i schemat.

Kod
CREATE TABLE my_schema.my_spatial_table (id serial);

Att beskriva tabellen visar en enda id-kolumn.

Kod
\d my_schema.my_spatial_table
Utdata
Table "my_schema.my_spatial_table"
 Column |  Type   |                                Modifiers
--------+---------+-------------------------------------------------------------------------
 id     | integer | not null default nextval('my_schema.my_spatial_table_id_seq'::regclass)

Lägg till en rumslig kolumn i tabellen.

Kod
SELECT AddGeometryColumn('my_schema', 'my_spatial_table', 'geom', 4326, 'POINT', 2);

Lägg till en punktkolumn med det gamla begränsningsbaserade beteendet.

Kod
SELECT AddGeometryColumn('my_schema', 'my_spatial_table', 'geom_c', 4326, 'POINT', 2, false);

Lägg till en CurvePolygon-kolumn med det gamla begränsningsbaserade beteendet.

Kod
SELECT AddGeometryColumn('my_schema', 'my_spatial_table', 'geomcp_c', 4326, 'CURVEPOLYGON', 2, false);
Utdata
my_schema.my_spatial_table.geomcp_c SRID:4326 TYPE:CURVEPOLYGON DIMS:2

Beskriv tabellen igen för att se de nya geometrikolumnerna.

Kod
\d my_schema.my_spatial_table
Utdata
Table "my_schema.my_spatial_table"

Columns:
  id       integer               not null default nextval('my_schema.my_spatial_table_id_seq'::regclass)
  geom     geometry(Point,4326)
  geom_c   geometry
  geomcp_c geometry

Check constraints:
    "enforce_dims_geom_c" CHECK (st_ndims(geom_c) = 2)
    "enforce_dims_geomcp_c" CHECK (st_ndims(geomcp_c) = 2)
    "enforce_geotype_geom_c" CHECK (geometrytype(geom_c) = 'POINT'::text OR geom_c IS NULL)
    "enforce_geotype_geomcp_c" CHECK (geometrytype(geomcp_c) = 'CURVEPOLYGON'::text OR geomcp_c IS NULL)
    "enforce_srid_geom_c" CHECK (st_srid(geom_c) = 4326)
    "enforce_srid_geomcp_c" CHECK (st_srid(geomcp_c) = 4326)

Vyn geometry_columns registrerar också de nya kolumnerna.

Kod
SELECT f_geometry_column As col_name, type, srid, coord_dimension As ndims
FROM geometry_columns
WHERE f_table_name = 'my_spatial_table' AND f_table_schema = 'my_schema';
Utdata
col_name |     type     | srid | ndims
----------+--------------+------+-------
 geom     | Point        | 4326 |     2
 geom_c   | Point        | 4326 |     2
 geomcp_c | CurvePolygon | 4326 |     2