Todos los productos
Search
Centro de documentos

PolarDB:UNIQUE CHECK IGNORE

Última actualización: Sep 05, 2026

PolarDB for MySQL admite tablas particionadas cuya clave primaria no incluye las columnas de la clave de partición (UNIQUE CHECK IGNORE, o UCI por sus siglas en inglés). Esta función está disponible en la versión 8.0.2.2.17 y posteriores del motor de base de datos.

Ámbito de aplicación

La versión del kernel de su clúster debe cumplir los siguientes requisitos:

  • MySQL 8.0.1, con una versión de revisión 8.0.1.1.46 o posterior.

  • MySQL 8.0.2, con una versión de revisión 8.0.2.2.26 o posterior.

Para comprobar la versión del kernel de su clúster, consulte Query the version number.

Referencia de parámetros

Parámetro

Ámbito

Descripción

loose_polar_allow_unique_check_ignore

Global

Controla si la clave primaria o la clave única de una tabla particionada debe contener las columnas de la clave de partición. Es decir, define si la clave primaria y la clave única se desacoplan de la clave de partición. Valores válidos:

  • ON: permite crear tablas particionadas cuya clave primaria o clave única no contenga las columnas de la clave de partición.

  • OFF (predeterminado): impide crear tablas particionadas cuya clave primaria o clave única no contenga las columnas de la clave de partición.

Los cambios surten efecto de inmediato, sin necesidad de reiniciar el clúster.

Sintaxis

UCI es un atributo de PolarDB table_options que se utiliza al crear una tabla. Al especificar UNIQUE CHECK IGNORE=1, la tabla omite las comprobaciones de unicidad en las columnas de la clave de partición. De este modo, ya no se exige la relación entre la clave de partición y la clave primaria o única, por lo que puede elegir cualquier columna como clave de partición. A continuación se muestra la sintaxis:

CREATE TABLE [ schema. ]table_name
 table_definition table_options
   PARTITION BY ...
   SUBPARTITION BY ...

En esta sintaxis se añade la opción UNIQUE CHECK IGNORE = { 1| 0 } a table_options. El valor UNIQUE CHECK IGNORE=1 indica que la clave primaria y la clave única no necesitan contener todas las columnas de la clave de partición, lo que brinda mayor flexibilidad para seleccionar dicha clave. Sin embargo, no se garantiza la unicidad de las claves primarias ni de las claves únicas entre distintas particiones. La unicidad solo se aplica dentro de cada partición, por lo que pueden existir valores duplicados en diferentes particiones.

Nota
  • El atributo de tabla UNIQUE CHECK IGNORE solo se puede usar en tablas particionadas. Si lo añade a una tabla no particionada, se generará un error.

  • El atributo de tabla UNIQUE CHECK IGNORE es de solo lectura. No es posible modificar el valor de UNIQUE CHECK IGNORE después de crear la tabla.

  • Una tabla particionada con UCI no garantiza la unicidad de la clave primaria. Para exigirla, cree un Global Secondary Indexes (GSIs) único en las columnas de la clave primaria. De lo contrario, se permitirán valores de clave primaria duplicados entre distintas particiones. Para conocer el procedimiento exacto, consulte Example 2.

  • Una tabla particionada con UCI tampoco garantiza la unicidad de un índice único que no contenga las columnas de la clave de partición. Se recomienda crearlo como un Global Secondary Indexes (GSIs) único.

Parámetros

Parámetro

Descripción

table_name

Nombre de la tabla que se va a crear.

Ejemplos

Ejemplo 1

CREATE TABLE t1(
        a INT PRIMARY KEY,
        b INT UNIQUE,
        c INT
    ) UNIQUE CHECK IGNORE=1
    PARTITION BY RANGE(c) (
            PARTITION p0 VALUES LESS THAN (20) ,
            PARTITION p1 VALUES LESS THAN (40) ,
            PARTITION p2 VALUES LESS THAN (60)
    );

Ejemplo 2

// A unique global secondary index ensures primary key uniqueness
CREATE TABLE t1(
        a INT PRIMARY KEY,
        b INT UNIQUE,
        c INT,
        UNIQUE KEY i_a_g(a) GLOBAL
    ) UNIQUE CHECK IGNORE=1
    PARTITION BY HASH(c) PARTITIONS 11;