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

Tetapkan Nilai Default untuk Kolom di SQLite:Batasan DEFAULT

Saat membuat tabel di SQLite, Anda memiliki opsi untuk menambahkan batasan ke setiap kolom.

Salah satu kendala tersebut adalah DEFAULT kendala.

DEFAULT batasan memungkinkan Anda untuk menentukan nilai yang akan digunakan jika tidak ada nilai yang diberikan untuk kolom tersebut saat baris baru dimasukkan.

Jika Anda tidak gunakan DEFAULT klausa, maka nilai default untuk kolom adalah NULL .

Kemungkinan Nilai Default

Nilai default eksplisit dari DEFAULT batasan dapat berupa salah satu dari berikut ini:

  • konstanta string
  • konstanta gumpalan
  • nomor yang ditandatangani
  • ekspresi konstan apa pun yang diapit tanda kurung.
  • CURRENT_TIME
  • CURRENT_DATE
  • CURRENT_TIMESTAMP
  • NULL

Contoh

Berikut ini contoh untuk didemonstrasikan.

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName,
    Price DEFAULT 0.00
);

Di sini saya menambahkan DEFAULT kendala pada Harga kolom. Dalam hal ini, nilai defaultnya adalah 0,00 .

Sekarang ketika saya menyisipkan baris baru tanpa menentukan nilai untuk Harga kolom, nilai default digunakan.

INSERT INTO Products ( ProductId, ProductName ) 
VALUES (1, 'Long Weight');

SELECT * FROM Products;

Hasil:

ProductId   ProductName  Price     
----------  -----------  ----------
1           Long Weight  0.0       

Nilai Eksplisit

Tentu saja, nilai default hanya digunakan jika Anda tidak memberikan nilai secara eksplisit. Jika ya, maka nilai itu yang akan digunakan.

Ini contoh lain. Kali ini saya secara eksplisit memberikan nilai untuk Harga itu kolom.

INSERT INTO Products ( ProductId, ProductName, Price ) 
VALUES (2, 'Left-Handed Screwdriver', 19.99);

SELECT * FROM Products;

Hasil:

ProductId   ProductName                Price     
----------  -------------------------  ----------
1           Long Weight                0.0       
2           Left-Handed Screwdriver    19.99     

NULL Eksplisit

Contoh sebelumnya juga berlaku untuk NULL yang diberikan secara eksplisit nilai.

Untuk mendemonstrasikan ini, inilah yang terjadi jika saya secara eksplisit memasukkan NULL ke dalam Harga kolom.

INSERT INTO Products ( ProductId, ProductName, Price ) 
VALUES (3, 'Elbow Grease', NULL);

SELECT * FROM Products;

Hasil:

ProductId   ProductName               Price     
----------  ------------------------  ----------
1           Long Weight               0.0       
2           Left-Handed Screwdriver   19.99     
3           Elbow Grease                        

Kali ini Harga kolomnya adalah NULL , karena itulah yang saya masukkan secara eksplisit ke dalam kolom itu.

Untuk mencegah hal ini terjadi, lihat Cara Mengonversi Nilai NULL ke Nilai Default Kolom saat Memasukkan Data di SQLite.

Stempel Waktu Default

Dalam contoh ini saya membuat tabel lain. Kali ini saya menyetel nilai default ke stempel waktu saat ini.

CREATE TABLE Types( 
    TypeId INTEGER PRIMARY KEY, 
    Type,
    DateInserted DEFAULT CURRENT_TIMESTAMP
);

Dan sekarang untuk beberapa data.

INSERT INTO Types (Type) 
VALUES ( 'Hardware' );

SELECT * FROM Types;

Hasil:

TypeId      Type        DateInserted       
----------  ----------  -------------------
1           Hardware    2020-06-05 00:21:57

Stempel waktu dimasukkan seperti yang diharapkan.

Nilai Peningkatan Otomatis sebagai Nilai Default

Perhatikan bahwa pada contoh sebelumnya saya juga tidak memberikan nilai untuk TypeId kolom, tetapi secara otomatis menghasilkan nilai default.

Dalam hal ini, nilai default bukan karena DEFAULT paksaan. Hal ini dikarenakan kolom tersebut merupakan kolom primary key yang dibuat dengan menggunakan INTEGER PRIMARY KEY . Saat Anda mendefinisikan kolom menggunakan INTEGER PRIMARY KEY , kolom secara otomatis menjadi kolom kenaikan otomatis.

Untuk mendemonstrasikan ini secara lebih menyeluruh, inilah yang terjadi jika saya memasukkan beberapa baris lagi.

INSERT INTO Types (Type) 
VALUES 
  ( 'Software' ),
  ( 'Hardcopy' );

SELECT * FROM Types;

Hasil:

TypeId      Type        DateInserted       
----------  ----------  -------------------
1           Hardware    2020-06-05 00:21:57
2           Software    2020-06-05 00:22:14
3           Hardcopy    2020-06-05 00:22:14

Untuk informasi selengkapnya tentang penambahan kolom otomatis, lihat Cara kerja AUTOINCREMENT di SQLite, dan Cara Membuat Kolom Peningkatan Otomatis di SQLite.

Ekspresi sebagai Nilai Default

Anda juga dapat menggunakan ekspresi konstan sebagai nilai default. Untuk melakukan ini, ekspresi harus diapit dalam tanda kurung.

Ini contohnya.

CREATE TABLE Person( 
    PersonId INTEGER PRIMARY KEY, 
    Name,
    Entered DEFAULT (round(julianday('now'))),
    Deadline  DEFAULT (round(julianday('now')) + 10.5)
);

Dan sekarang untuk beberapa data.

INSERT INTO Person (Name) 
VALUES ( 'Fred' );

SELECT * FROM Person;

Hasil:

PersonId    Name        Entered     Deadline  
----------  ----------  ----------  ----------
1           Fred        2459006.0   2459016.5 

Perhatikan bahwa ekspresi harus berupa ekspresi konstan. Ekspresi konstanta adalah ekspresi yang hanya berisi konstanta.

Jika Anda mencoba menggunakan ekspresi yang tidak hanya berisi konstanta, Anda akan mendapatkan kesalahan.

CREATE TABLE Person( 
    PersonId INTEGER PRIMARY KEY, 
    FirstName,
    LastName,
    UserName DEFAULT (FirstName || LastName)
);

Hasil:

Error: default value of column [UserName] is not constant

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus baris tertentu di Database SQLite

  2. Akses Layanan Aktivitas dan Latar Belakang ke Database SQLite

  3. simpan Daftar<Model class> ke sqlite

  4. Buat Tabel di SQLite

  5. Android:Sisipan Massal, saat InsertHelper tidak digunakan lagi