TAMBAHKAN klausa BATASAN

Penting

Fitur ini ada di Pratinjau Publik.

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

Menambahkan kunci primer informasi, kunci asing informasi, atau batasan pemeriksaan yang diberlakukan ke tabel Delta Lake yang ada.

Sintaks

ADD [check_constraint | key_constraint ]

check_constraint
    CONSTRAINT name CHECK ( condition ) [ ENFORCED ]

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

constraint_option
    { NOT ENFORCED |
      DEFERRABLE |
      INITIALLY DEFERRED |
      { NORELY | RELY } }

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

  • check_constraint

    Menentukan batasan pemeriksaan untuk tabel Delta Lake.

    • CONSTRAINTnama

      Menentukan nama untuk batasan. Nama harus unik dalam tabel. Jika tidak ada nama yang disediakan, Azure Databricks akan menghasilkannya.

    • CHECK (kondisi)

      condition harus berupa ekspresi deterministik yang BOOLEANmengembalikan .

      condition dapat terdiri atas literal, pengidentifikasi kolom dalam tabel, dan fungsi atau operator SQL bawaan deterministik kecuali:

      Juga condition tidak boleh berisi subkueri apa pun.

      CHECK Agar batasan terpenuhi di Azure Databricks, batasan harus dievaluasi ke true.

      Delta Lake memverifikasi validitas batasan pemeriksaan terhadap data baru dan yang sudah ada. Jika ada baris yang ada melanggar batasan, akan muncul kesalahan.

  • key_constraint

    Penting

    Fitur ini ada di Pratinjau Publik.

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

    Menentukan kunci primer informasi atau batasan kunci asing informasi untuk tabel Delta Lake.

    • CONSTRAINTnama

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

    • PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

      Berlaku untuk:centang ditandai ya Hanya Katalog Unity

      Menambahkan batasan kunci utama ke tabel Delta Lake. Tabel dapat memiliki paling banyak satu kunci primer.

      Batasan kunci primer tidak didukung untuk tabel dalam hive_metastore katalog.

    • key_column

      Kolom tabel subjek yang didefinisikan sebagai NOT NULL. 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.

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

      Berlaku untuk:centang ditandai ya Hanya Katalog Unity

      Menambahkan batasan kunci asing (integritas referensial) ke tabel Delta Lake.

      Batasan kunci asing tidak didukung untuk tabel dalam hive_metastore katalog.

      • foreign_key_column

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

      • parent_table

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

      • parent_column

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

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

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

    • 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 atau RELY

        Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 14.2 ke atas

        Jika RELY, Azure Databricks dapat mengeksploitasi batasan untuk menulis ulang kueri. Adalah tanggung jawab pengguna untuk memastikan batasan terpenuhi. Mengandalkan batasan yang tidak terpenuhi dapat menyebabkan hasil kueri yang salah.

        Default adalah NORELY.

    • 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

-- Add a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING);
> ALTER TABLE persons ADD CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name);

-- Add a foreign key which Databricks does not enforce, but can rely upon.
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING);
> ALTER TABLE pets ADD CONSTRAINT pets_persons_fk
    FOREIGN KEY(owner_first_name, owner_last_name) REFERENCES persons
    NOT ENFORCED RELY;

-- Add a check contraint
> ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (length(name) < 20);