SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Buat Batasan CHECK di SQLite

Di SQLite, Anda dapat membuat CHECK kendala dengan menambahkan kode yang berlaku dalam CREATE TABLE pernyataan saat membuat tabel.

Jika tabel memiliki CHECK kendala di atasnya, dan Anda mencoba memasukkan atau memperbarui data yang melanggar CHECK kendala, operasi akan gagal dengan kesalahan.

Batasan PERIKSA Level Kolom

Berikut ini contoh pembuatan CHECK tingkat kolom kendala.

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName, 
    Price 
    CHECK (Price > 0)
);

Bagian yang masuk CHECK (Price > 0) adalah CHECK kendala.

Dalam hal ini, ini menetapkan bahwa harga harus lebih besar dari nol.

Sekarang mari kita lihat apa yang terjadi jika kita mencoba memasukkan data yang melanggar batasan ini.

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 0.00);

Hasil:

Error: CHECK constraint failed: Products

CHECK kendala bekerja seperti yang diharapkan.

Saya mendapatkan hasil yang sama jika saya mencoba menggunakan nilai negatif.

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', -1.00);

Hasil:

Error: CHECK constraint failed: Products

Tetapi jika saya meningkatkannya ke nilai yang lebih besar dari nol, maka INSERT operasi berhasil.

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 1.00);

SELECT * FROM Products;

Hasil:

ProductId   ProductName  Price     
----------  -----------  ----------
1           Blue Widget  1.0       

Keterbatasan PERIKSA Tingkat Tabel

CHECK tingkat tabel kendala memeriksa data di seluruh baris, bukan hanya satu kolom. Dengan kata lain, Anda dapat menggunakan batasan tingkat tabel untuk memeriksa data dari beberapa kolom.

Berikut adalah contoh tingkat tabel CHECK kendala.

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName, 
    Price,
    Discount,
    CHECK (Price >= Discount)
);

Tabel ini mirip dengan yang pertama, kecuali bahwa saya telah menambahkan kolom tambahan yang disebut Diskon .

Untuk CHECK kendala, saya sekarang memeriksa bahwa harga lebih besar dari diskon (kami tidak ingin kemungkinan memiliki diskon yang lebih besar dari harga sebenarnya).

Inilah yang terjadi jika saya mencoba memasukkan diskon yang lebih besar dari harga.

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 1.00, 2.00);

Hasil:

Error: CHECK constraint failed: Products

Jika saya menyesuaikan diskon sehingga lebih rendah dari harga, itu berhasil dimasukkan.

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 1.00, 0.50);

SELECT * FROM Products;

Hasil:

ProductId   ProductName  Price       Discount  
----------  -----------  ----------  ----------
1           Blue Widget  1.0         0.5       

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengkloning Database SQLite

  2. 4 Cara Mendapatkan Informasi tentang Struktur Tabel di SQLite

  3. SQLite JSON_PATCH()

  4. Gabung SQLite

  5. Android Sqlite diupgrade untuk menghapus tabel dari database