All Products
Search
Document Center

PolarDB:UNIQUE CHECK IGNORE

Last Updated:Jul 17, 2026

PolarDB for MySQL mendukung tabel partisi yang kunci primernya tidak mencakup kolom kunci partisi (UNIQUE CHECK IGNORE, disingkat UCI). Fitur UCI tersedia pada Database engine versi 8.0.2.2.17 dan yang lebih baru.

Ruang lingkup penerapan

Versi kernel kluster Anda harus memenuhi persyaratan berikut:

  • MySQL 8.0.1, dengan versi revisi minimal 8.0.1.1.46.

  • MySQL 8.0.2, dengan versi revisi minimal 8.0.2.2.26.

Untuk memverifikasi versi kernel kluster Anda, lihat Query the version number.

Referensi parameter

Parameter

Cakupan

Deskripsi

loose_polar_allow_unique_check_ignore

Global

Mengontrol apakah kunci primer atau kunci unik pada tabel partisi harus mencakup kolom kunci partisi (yaitu, apakah kunci primer dan kunci unik dipisahkan dari kunci partisi). Nilai yang valid:

  • ON: Memungkinkan Anda membuat tabel partisi yang kunci primer atau kunci uniknya tidak mencakup kolom kunci partisi.

  • OFF (default): Mencegah Anda membuat tabel partisi yang kunci primer atau kunci uniknya tidak mencakup kolom kunci partisi.

Perubahan langsung berlaku tanpa perlu restart kluster.

Sintaksis

UCI merupakan atribut dari PolarDB dalam table_options saat membuat tabel. Menentukan UNIQUE CHECK IGNORE=1 menunjukkan bahwa tabel melewati pemeriksaan keunikan pada kolom kunci partisi. Dengan demikian, hubungan antara kunci partisi dan kunci primer atau kunci unik tidak lagi diberlakukan, sehingga Anda dapat memilih kolom apa pun sebagai kunci partisi. Sintaksisnya adalah sebagai berikut:

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

Dalam sintaksis ini, opsi UNIQUE CHECK IGNORE = { 1| 0 } ditambahkan ke table_options. Nilai UNIQUE CHECK IGNORE=1 menunjukkan bahwa kunci primer dan kunci unik tidak perlu mencakup semua kolom kunci partisi, sehingga memungkinkan pemilihan kunci partisi yang lebih fleksibel. Namun, keunikan kunci primer dan kunci unik lintas partisi tidak dijamin—keunikan hanya diberlakukan di dalam setiap partisi, dan nilai duplikat dapat muncul di partisi yang berbeda.

Catatan
  • Atribut tabel UNIQUE CHECK IGNORE hanya dapat digunakan pada tabel partisi. Menambahkan atribut ini ke tabel non-partisi akan menyebabkan error.

  • Atribut tabel UNIQUE CHECK IGNORE bersifat read-only. Anda tidak dapat mengubah nilai UNIQUE CHECK IGNORE setelah tabel dibuat.

  • Tabel partisi UCI tidak menjamin keunikan kunci primer. Untuk memberlakukan keunikan kunci primer, Anda harus membuat Global Secondary Indexes (GSIs) unik pada kolom kunci primer. Jika tidak, nilai kunci primer duplikat diperbolehkan lintas partisi. Untuk prosedur lengkapnya, lihat Contoh 2.

  • Tabel partisi UCI tidak menjamin keunikan indeks unik yang tidak mencakup kolom kunci partisi. Kami menyarankan agar Anda membuatnya sebagai Global Secondary Indexes (GSIs) unik.

Parameter

Parameter

Deskripsi

table_name

Nama tabel yang akan dibuat.

Contoh

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

Contoh 2

// Indeks sekunder global unik menjamin keunikan kunci primer
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;