Todos los productos
Search
Centro de documentos

AnalyticDB:Gestión de tablas

Última actualización: Sep 04, 2026

Las tablas de AnalyticDB for PostgreSQL funcionan de manera similar a las de las bases de datos relacionales, con una diferencia clave: las filas se distribuyen entre los nodos de cómputo. La directiva de distribución de cada tabla determina cómo se dispersan dichas filas.

Creación de una tabla estándar

Use CREATE TABLE para definir una tabla. Al crearla, especifique:

Sintaxis:

CREATE TABLE table_name (
  [ { column_name data_type [ DEFAULT default_expr ]   -- Column definition
     [column_constraint [ ... ]]                        -- Column-level constraint
  ]
     | table_constraint                                 -- Table-level constraint
  ])
  [ WITH ( storage_parameter=value [, ... ] ) ]         -- Storage model
  [ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]  -- Distribution key
  [ partition clause]                                   -- Partitioning strategy

Ejemplo:

El ejemplo a continuación crea una tabla sales con trans_id como clave de distribución y particionamiento por rango basado en fechas.

CREATE TABLE sales (
  trans_id int,
  date date,
  amount decimal(9,2),
  region text)
  DISTRIBUTED BY (trans_id)
  PARTITION BY RANGE(date)
  (start (date '2018-01-01') inclusive
   end (date '2019-01-01') exclusive every (interval '1 month'),
   default partition outlying_dates);

Creación de una tabla temporal

Las tablas temporales almacenan datos intermedios durante la duración de una sesión o transacción. De forma predeterminada, una tabla temporal se elimina automáticamente al finalizar la sesión.

Sintaxis:

CREATE TEMPORARY TABLE table_name(...)
    [ON COMMIT {PRESERVE ROWS | DELETE ROWS | DROP}]

Use la cláusula ON COMMIT para controlar qué sucede con la tabla al final de la transacción actual:

Opción

Comportamiento

PRESERVE ROWS

Conserva todas las filas. Esta es la opción predeterminada.

DELETE ROWS

Elimina todas las filas, pero conserva la estructura de la tabla.

DROP

Elimina la tabla por completo.

Ejemplo:

CREATE TEMPORARY TABLE temp_foo (a int, b text) ON COMMIT DROP;

Definición de restricciones

Las restricciones limitan los datos que se pueden almacenar en una tabla, ya sea en la columna o en la tabla.

Antes de definir restricciones, considere las siguientes reglas:

  • Las restricciones CHECK solo pueden hacer referencia a columnas de la tabla donde se definen.

  • Las restricciones UNIQUE y PRIMARY KEY deben incluir la clave de distribución. Estas restricciones no se permiten en tablas optimizadas para anexión (AO) ni en tablas orientadas a columnas.

  • Las restricciones FOREIGN KEY se permiten, pero no se aplican de forma obligatoria.

  • Las restricciones definidas en una partición se aplican a todas las demás particiones. No es posible limitar el alcance de las restricciones a particiones individuales.

Sintaxis:

UNIQUE ( column_name [, ... ] )
  | PRIMARY KEY ( column_name [, ... ] )
  | CHECK ( expression )
  | FOREIGN KEY ( column_name [, ... ] )
           REFERENCES table_name [ ( column_name [, ... ] ) ]
           [ key_match_type ]
           [ key_action ]
           [ key_checking_mode ]

Restricciones CHECK

Una restricción CHECK exige que los valores de la columna cumplan con una expresión booleana.

CREATE TABLE products (
  product_no integer,
  name text,
  price numeric CHECK (price > 0)
);

Restricciones NOT NULL

Una restricción NOT NULL impide que una columna contenga valores NULL.

CREATE TABLE products (
  product_no integer NOT NULL,
  name text NOT NULL,
  price numeric
);

Restricciones UNIQUE

Una restricción UNIQUE garantiza que los valores de una columna o grupo de columnas sean únicos en todas las filas. La tabla debe tener distribución hash y las columnas de la restricción deben incluir la clave de distribución.

CREATE TABLE products (
  product_no integer UNIQUE,
  name text,
  price numeric)
  DISTRIBUTED BY (product_no);

Restricciones PRIMARY KEY

Una restricción PRIMARY KEY combina una restricción UNIQUE y una restricción NOT NULL. La tabla debe tener distribución hash y las columnas de la restricción deben incluir la clave de distribución.

Si una tabla tiene una clave primaria, la columna o columnas correspondientes se usan como clave de distribución de forma predeterminada.

CREATE TABLE products (
  product_no integer PRIMARY KEY,
  name text,
  price numeric)
  DISTRIBUTED BY (product_no);