Todos os produtos
Search
Central de documentação

PolarDB:UNIQUE CHECK IGNORE

Última atualização: Jul 16, 2026

PolarDB for MySQL oferece suporte a tabelas particionadas cuja chave primária não inclui as colunas da chave de partição (recurso conhecido como UNIQUE CHECK IGNORE ou UCI). O UCI está disponível no Database engine 8.0.2.2.17 e versões posteriores.

Escopo de aplicação

A versão do kernel do seu cluster deve atender aos seguintes requisitos:

  • MySQL 8.0.1, com versão de revisão 8.0.1.1.46 ou posterior.

  • MySQL 8.0.2, com versão de revisão 8.0.2.2.26 ou posterior.

Para verifique a versão do kernel do seu cluster, consulte Consultar o número da versão.

Referência de parâmetros

Parâmetro

Escopo

Descrição

loose_polar_allow_unique_check_ignore

Global

Controla se a chave primária ou a chave exclusiva de uma tabela particionada deve conter as colunas da chave de partição (ou seja, se a chave primária e a chave exclusiva estão desacopladas da chave de partição). Valores válidos:

  • ON: Permite crie tabelas particionadas cuja chave primária ou chave exclusiva não contenha as colunas da chave de partição.

  • OFF (padrão): Impede a criação de tabelas particionadas cuja chave primária ou chave exclusiva não contenha as colunas da chave de partição.

As alterações entram em vigor imediatamente, sem necessidade de reiniciar o cluster.

Sintaxe

O UCI é um atributo de table_options do PolarDB usado durante a criação de uma tabela. Especificar UNIQUE CHECK IGNORE=1 faz com que a tabela ignore as verificações de unicidade nas colunas da chave de partição. Nesse cenário, o vínculo entre a chave de partição e a chave primária ou exclusiva deixa de ser obrigatório, permitindo escolha qualquer coluna como chave de partição. A sintaxe é a seguinte:

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

Nessa sintaxe, a opção UNIQUE CHECK IGNORE = { 1| 0 } foi adicionada a table_options. O valor UNIQUE CHECK IGNORE=1 indica que a chave primária e a chave exclusiva não precisam conter todas as colunas da chave de partição, o que proporciona maior flexibilidade na escolha da chave de partição. No entanto, a unicidade das chaves primárias e exclusivas entre partições não é garantida. A restrição de unicidade aplica-se apenas dentro de cada partição, sendo possível haver valores duplicados em partições diferentes.

Nota
  • O atributo de tabela UNIQUE CHECK IGNORE é aplicável exclusivamente a tabelas particionadas. Adicionar esse atributo a uma tabela não particionada resulta em erro.

  • O atributo de tabela UNIQUE CHECK IGNORE é somente leitura. Não é possível modifique o valor de UNIQUE CHECK IGNORE após a criação da tabela.

  • Tabelas particionadas com UCI não garantem a unicidade da chave primária. Para impor essa unicidade, crie um Índice Secundário Global (GSI) exclusivo nas colunas da chave primária. Caso contrário, valores duplicados de chave primária serão permitidos entre partições. Para ver o procedimento detalhado, consulte Exemplo 2.

  • Em tabelas particionadas com UCI, índices exclusivos que não incluem as colunas da chave de partição também não têm unicidade garantida. Recomendamos criá-los como Índices Secundários Globais (GSIs) exclusivos.

Parâmetros

Parâmetro

Descrição

table_name

Nome da tabela a ser criada.

Exemplos

Exemplo 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)
    );

Exemplo 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;