Klausa BATASAN

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Penting

Fitur ini ada di Pratinjau Publik.

Menambahkan kunci primer informasi atau kunci asing informasi sebagai bagian dari pernyataan CREATE TABLE atau CREATE MATERIALIZED VIEW .

Untuk menambahkan batasan pemeriksaan ke tabel Delta Lake, gunakan ALTER TABLE setelah tabel dibuat.

Sintaks

table_constraint Gunakan klausa untuk menentukan batasan yang mencakup beberapa kolom atau untuk memisahkan sintaks dari definisi kolom.

table_constraint
   { [ CONSTRAINT name ]
     { PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
       { FOREIGN KEY ( foreign_key_column [, ...] )
         REFERENCES parent_table [ ( parent_column [, ...] ) ]
         [ foreign_key_option | constraint_option ] [...]
       }
     }
   }

column_constraintGunakan klausa untuk menentukan batasan khusus untuk definisi kolom tunggal.

column_constraint
  { [ CONSTRAINT name ]
    { PRIMARY KEY [ constraint_option ] [...] |
      { [ FOREIGN KEY ]
        REFERENCES parent_table [ ( parent_column [, ...] ) ]
        [ foreign_key_option | constraint_option ] [...]
      }
    }
  }
constraint_option
    { NOT ENFORCED |
      DEFERRABLE |
      INITIALLY DEFERRED |
      NORELY }

foreign_key_option
    { MATCH FULL |
      ON UPDATE NO ACTION |
      ON DELETE NO ACTION }

Untuk kompatibilitas dengan dialek SQL non-standar, Anda dapat menentukan ENABLE NOVALIDATE alih-alih NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Parameter

  • Nama BATASAN

    Secara opsional menentukan nama untuk batasan. Nama harus unik dalam skema. Jika tidak ada nama yang disediakan, Azure Databricks akan menghasilkannya.

  • KUNCI PRIMER ( key_column [ TIMESERIES ] [, ...] ) [constraint_option [...] ]

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 11.3 LTS dan di atas centang ditandai ya Unity Catalog saja

    Menambahkan batasan kunci primer informasi ke tabel atau tampilan materialisasi. Tabel atau tampilan materialisasi dapat memiliki paling banyak satu kunci utama.

    Kolom kunci utama secara implisit didefinisikan sebagai NOT NULL.

    Batasan kunci primer tidak didukung untuk tabel dalam hive_metastore katalog.

    • key_column

      Kolom tabel subjek atau tampilan materialisasi. Nama kolom tidak boleh diulang.

    • TIMESERIES

      Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 13.3 LTS ke atas

      Secara opsional melabeli komponen kolom kunci utama sebagai mewakili timeseries.

  • PRIMARY KEY [ constraint_option ] [...]

    Menambahkan batasan kunci utama kolom tunggal ke tabel atau tampilan materialisasi, menggunakan definisi kolom kunci sebelumnya.

    Ini column_constraint setara dengan table_constraint

    PRIMARY KEY (key_column) [ constraint_option ] [...]

  • FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 11.3 LTS dan di atas centang ditandai ya Unity Catalog saja

    Menambahkan batasan kunci asing informasional (integritas referensial) ke tabel atau tampilan materialisasi.

    Batasan kunci asing tidak didukung untuk tabel dalam hive_metastore katalog.

    Batasan kunci asing yang hanya berbeda dalam permutasi kolom kunci asing tidak diizinkan.

    • foreign_key_column

      Kolom tabel subjek atau tampilan materialisasi. Nama kolom tidak boleh diulang. Jenis data setiap kolom harus cocok dengan jenis pencocokan parent_column. Jumlah kolom harus cocok dengan jumlah parent_columnkolom. Dua kunci asing tidak dapat berbagi sekumpulan kolom kunci asing yang identik.

    • parent_table

      Menentukan tabel atau tampilan materialisasi yang dirujuk oleh kunci asing. Tabel harus memiliki batasan yang ditentukan PRIMARY KEY , dan Anda harus memiliki tabel atau tampilan materialisasi tersebut.

    • parent_column

      Kolom dalam tabel induk atau tampilan materialisasi yang merupakan bagian dari kunci utamanya. Semua kolom kunci utama tabel induk atau tampilan materialisasi harus dicantumkan.

      Jika kolom induk tidak tercantum, kolom tersebut ditentukan oleh urutan yang diberikan dalam PRIMARY KEY definisi.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

      Menambahkan batasan kunci asing kolom tunggal ke tabel atau tampilan materialisasi, menggunakan definisi kolom kunci asing sebelumnya.

      Ini column_constraint setara dengan table_constraint

      FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

  • constraint_option

    Mencantumkan properti batasan. Semua properti bersifat opsional tetapi tersirat secara default. Setiap properti paling banyak dapat ditentukan sekali.

    • NOT ENFORCED

      Azure Databricks tidak mengambil tindakan untuk memberlakukannya untuk baris yang sudah ada atau baru.

    • DEFERRABLE

      Penegakan batasan dapat ditangguhkan.

    • INITIALLY DEFERRED

      Pemberlakuan batasan ditangguhkan.

    • NORELY

      Azure Databricks tidak mengeksploitasi batasan untuk menulis ulang kueri.

  • foreign_key_option

    Mencantumkan properti khusus untuk batasan kunci asing. Semua properti bersifat opsional tetapi tersirat secara default. Setiap properti paling banyak dapat ditentukan sekali.

    • MATCH FULL

      Agar batasan dianggap benar semua nilai kolom harus NOT NULL.

    • ON UPDATE NO ACTION

      Jika induk PRIMARY KEY diperbarui, Azure Databricks tidak mengambil tindakan untuk membatasi pembaruan atau memperbarui kunci asing.

    • ON DELETE NO ACTION

      Jika baris induk dihapus, Azure Databricks tidak mengambil tindakan untuk membatasi tindakan, memperbarui kunci asing, atau menghapus baris dependen.

Penting

Azure Databricks tidak memberlakukan batasan kunci primer atau kunci asing. Konfirmasi batasan kunci sebelum menambahkan kunci primer atau asing. Proses penyerapan Anda dapat memberikan jaminan tersebut, atau Anda dapat menjalankan pemeriksaan terhadap data Anda.

Contoh

-- Create a table with a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING,
                       CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name));

-- create a table with a foreign key
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING,
                    CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, owner_last_name) REFERENCES persons);

-- Create a table with a single column primary key and system generated name
> CREATE TABLE customers(customerid STRING NOT NULL PRIMARY KEY, name STRING);

-- Create a table with a names single column primary key and a named single column foreign key
> CREATE TABLE orders(orderid BIGINT NOT NULL CONSTRAINT orders_pk PRIMARY KEY,
                      customerid STRING CONSTRAINT orders_customers_fk REFERENCES customers);