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 ).