W MariaDB, DEFAULT()
to wbudowana funkcja, która zwraca domyślną wartość kolumny tabeli.
Jeśli kolumna nie ma wartości domyślnej i jest NULLABLE
, a następnie NULL
jest zwracany. Jeśli kolumna nie ma wartości domyślnej i jest nie NULLABLE
, zwracany jest błąd.
Składnia
Składnia wygląda tak:
DEFAULT(col_name)
Gdzie col_name
to nazwa kolumny, dla której ma zostać zwrócona wartość domyślna.
W niektórych przypadkach można go również używać bez nawiasów i argumentów:
DEFAULT
Ta składnia może być użyta do jawnego ustawienia kolumny na jej wartość domyślną.
Przykład
Oto przykład pokazujący, jak działa funkcja.
Załóżmy, że tworzymy taką tabelę:
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
);
Tutaj ustawiamy domyślną wartość dla meal
kolumna. W szczególności użyliśmy DEFAULT 'Salad'
aby ustawić domyślny posiłek na Salad
.
Używa DEFAULT
klauzula CREATE TABLE
oświadczenie. Chociaż jest to związane z naszym celem tutaj (ustawia domyślną wartość dla kolumny), nie należy go mylić z DEFAULT()
funkcja, której dotyczy ten artykuł.
Teraz wstawmy kilka wierszy:
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');
Niektóre z tych wpisów wyraźnie określają, jakiego posiłku chce gość, podczas gdy inne nie. Ci, którzy tego nie zrobią, użyją tylko domyślnego posiłku (Salad
).
Więc teraz wybierzmy te wiersze z tabeli. Uwzględnimy DEFAULT()
funkcja w naszym wyborze:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals;
Wynik:
+----------+---------------+---------+--------------------------+-----------------+ | 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)
kolumna zwraca wartości domyślne, a meal
kolumna zwraca rzeczywiste wartości, które zostały wstawione.
Podobnie DEFAULT(special_request)
kolumna zwraca wartości domyślne dla tej kolumny, a special_request
kolumna zwraca rzeczywiste wartości, które zostały wstawione.
Odnośnie special_request
kolumna, w rzeczywistości nie ustawiliśmy wartości domyślnej dla tej kolumny, więc wynikiem jest NULL
. Zauważ, że jeśli kolumna nie była NULLABLE
, to otrzymalibyśmy błąd (patrz poniżej). Ale kolumna jest NULLABLE
, a więc domyślna wartość NULL
zwrócone.
Jasne wstawianie wartości domyślnej
Możesz użyć DEFAULT
słowo kluczowe bez nawiasów, aby jawnie wstawić domyślną wartość do kolumny.
Oto przykład:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT);
Teraz wybierzmy ten wiersz:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6;
Wynik:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
W obu przypadkach wstawił wartość domyślną dla odpowiedniej kolumny. Na meal
kolumna, to była Salad
. Dla special_request
kolumna, to było NULL
.
Kolumny bez wartości null
Jak wspomniano, próba uzyskania wartości domyślnej z NULLABLE
kolumna, która nie ma wartości domyślnej, powoduje błąd.
Przykład:
SELECT DEFAULT(guest_id)
FROM guest_meals;
Wynik:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
Kiedy tworzyliśmy tabelę, nie podaliśmy domyślnej wartości dla guest_id
kolumna, a także ustawiamy ją na NOT NULL
. Z tego powodu otrzymujemy błąd podczas próby zwrócenia wartości domyślnej.
Kolumny liczb całkowitych przy użyciu AUTO_INCREMENT
Dla kolumn liczb całkowitych przy użyciu AUTO_INCREMENT
, zwracana wartość to 0
.
Jako przykład stwórzmy tabelę z AUTO_INCREMENT
kolumna:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
kolumna używa INT
(integer) typ danych i jest ustawiony na AUTO_INCREMENT
.
Teraz wstaw kilka wierszy:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Teraz zwróćmy domyślną wartość guest_id
kolumna:
SELECT
DEFAULT(guest_id),
guest_id
FROM guest;
Wynik:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
DEFAULT(guest_id)
kolumna pokazuje, że domyślna wartość to 0
dla wszystkich rzędów. guest_id
kolumna pokazuje rzeczywistą wstawioną wartość (która została wygenerowana przez AUTO_INCREMENT
).