Di MariaDB, DEFAULT()
adalah fungsi bawaan yang mengembalikan nilai default untuk kolom tabel.
Jika kolom tidak memiliki nilai default dan NULLABLE
, lalu NULL
dikembalikan. Jika kolom tidak memiliki nilai default dan tidak NULLABLE
, kesalahan dikembalikan.
Sintaks
Sintaksnya seperti ini:
DEFAULT(col_name)
Dimana col_name
adalah nama kolom untuk mengembalikan nilai default.
Itu juga dapat digunakan tanpa tanda kurung dan argumen dalam kasus-kasus tertentu:
DEFAULT
Sintaks ini dapat digunakan untuk secara eksplisit menyetel kolom ke nilai defaultnya.
Contoh
Berikut ini contoh untuk mendemonstrasikan cara kerja fungsi.
Misalkan kita membuat tabel seperti ini:
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
);
Di sini, kami menetapkan nilai default untuk meal
kolom. Secara khusus, kami menggunakan DEFAULT 'Salad'
untuk mengatur makanan default ke Salad
.
Ini menggunakan DEFAULT
klausa dari CREATE TABLE
penyataan. Meskipun terkait dengan tujuan kita di sini (ini menetapkan nilai default untuk kolom), jangan bingung dengan DEFAULT()
tentang fungsi artikel ini.
Sekarang mari kita masukkan beberapa baris:
INSERT INTO guest_meals (guest_id) VALUES (1);
INSERT INTO guest_meals (guest_id, meal) VALUES (2, 'Fish');
INSERT INTO guest_meals (guest_id, meal) VALUES (3, 'Burrito');
INSERT INTO guest_meals (guest_id, meal, special_request) VALUES (4, 'Pasta', 'Hot');
INSERT INTO guest_meals (guest_id, special_request) VALUES (5, 'Vegan');
Beberapa entri ini secara eksplisit menyatakan makanan mana yang diinginkan tamu sementara yang lain tidak. Yang tidak hanya akan menggunakan makanan standar (Salad
).
Jadi sekarang mari kita pilih baris-baris itu dari tabel. Kami akan menyertakan DEFAULT()
fungsi dalam pilihan kami:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals;
Hasil:
+----------+---------------+---------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+---------+--------------------------+-----------------+ | 1 | Salad | Salad | NULL | NULL | | 2 | Salad | Fish | NULL | NULL | | 3 | Salad | Burrito | NULL | NULL | | 4 | Salad | Pasta | NULL | Hot | | 5 | Salad | Salad | NULL | Vegan | +----------+---------------+---------+--------------------------+-----------------+
DEFAULT(meal)
kolom mengembalikan nilai default, dan meal
kolom mengembalikan nilai aktual yang dimasukkan.
Demikian pula, DEFAULT(special_request)
kolom mengembalikan nilai default untuk kolom itu, dan special_request
kolom mengembalikan nilai aktual yang dimasukkan.
Mengenai special_request
kolom, kami tidak benar-benar menetapkan nilai default untuk kolom ini dan hasilnya adalah NULL
. Perhatikan bahwa jika kolomnya bukan NULLABLE
, maka kami akan mendapatkan kesalahan (lihat di bawah). Tapi kolomnya adalah NULLABLE
, dan nilai default NULL
dikembalikan.
Memasukkan Nilai Default Secara Eksplisit
Anda dapat menggunakan DEFAULT
kata kunci tanpa tanda kurung untuk secara eksplisit memasukkan nilai default ke dalam kolom.
Ini contohnya:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT);
Sekarang mari kita pilih baris itu:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6;
Hasil:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
Dalam kedua kasus, itu memasukkan nilai default untuk masing-masing kolom. Untuk meal
kolom, ini adalah Salad
. Untuk special_request
kolom, ini adalah NULL
.
Kolom Tidak Dapat Dibatalkan
Seperti yang disebutkan, mencoba mendapatkan nilai default dari non-NULLABLE
kolom yang tidak memiliki nilai default menghasilkan kesalahan.
Contoh:
SELECT DEFAULT(guest_id)
FROM guest_meals;
Hasil:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
Saat membuat tabel, kami tidak memberikan nilai default untuk guest_id
kolom, dan kami juga mengaturnya ke NOT NULL
. Karena itu, kami mendapatkan kesalahan saat mencoba mengembalikan nilai defaultnya.
Kolom Bilangan Bulat menggunakan AUTO_INCREMENT
Untuk kolom bilangan bulat menggunakan AUTO_INCREMENT
, nilai yang dikembalikan adalah 0
.
Sebagai contoh, mari kita buat tabel dengan AUTO_INCREMENT
kolom:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
kolom menggunakan INT
(bilangan bulat) tipe data, dan disetel ke AUTO_INCREMENT
.
Sekarang masukkan beberapa baris:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Sekarang, mari kembalikan nilai default guest_id
kolom:
SELECT
DEFAULT(guest_id),
guest_id
FROM guest;
Hasil:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
DEFAULT(guest_id)
kolom menunjukkan bahwa nilai default adalah 0
untuk semua baris. guest_id
kolom menunjukkan nilai sebenarnya yang dimasukkan (yang dihasilkan oleh AUTO_INCREMENT
).