V MariaDB, DEFAULT() je vestavěná funkce, která vrací výchozí hodnotu pro sloupec tabulky.
Pokud sloupec nemá žádnou výchozí hodnotu a je NULLABLE a poté NULL je vrácen. Pokud sloupec nemá žádnou výchozí hodnotu a není NULLABLE , je vrácena chyba.
Syntaxe
Syntaxe vypadá takto:
DEFAULT(col_name)
Kde col_name je název sloupce, pro který se má vrátit výchozí hodnota.
V určitých případech jej lze použít i bez závorek a argumentu:
DEFAULT Tuto syntaxi lze použít k explicitnímu nastavení sloupce na jeho výchozí hodnotu.
Příklad
Zde je příklad demonstrující, jak funkce funguje.
Předpokládejme, že vytvoříme tabulku takto:
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
);
Zde nastavíme výchozí hodnotu pro meal sloupec. Konkrétně jsme použili DEFAULT 'Salad' pro nastavení výchozího jídla na Salad .
Toto používá DEFAULT klauzule CREATE TABLE prohlášení. I když souvisí s naším účelem zde (nastavuje výchozí hodnotu pro sloupec), nelze jej zaměňovat s DEFAULT() funkce, o které je tento článek.
Nyní vložíme několik řádků:
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');
Některé z těchto položek výslovně uvádějí, jaké jídlo si host přeje, zatímco jiné nikoli. Ty, které ne, použijí pouze výchozí jídlo (Salad ).
Nyní tedy vybereme tyto řádky z tabulky. Zahrneme DEFAULT() funkce v našem výběru:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals; Výsledek:
+----------+---------------+---------+--------------------------+-----------------+ | 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) vrací výchozí hodnoty a meal sloupec vrací skutečné hodnoty, které byly vloženy.
Podobně DEFAULT(special_request) vrací výchozí hodnoty pro tento sloupec a special_request sloupec vrací skutečné hodnoty, které byly vloženy.
Pokud jde o special_request Ve skutečnosti jsme pro tento sloupec nenastavili výchozí hodnotu, takže výsledek je NULL . Všimněte si, že pokud sloupec nebyl NULLABLE , pak bychom dostali chybu (viz níže). Ale sloupec je NULLABLE , a tedy výchozí hodnota NULL vráceno.
Výslovné vložení výchozí hodnoty
Můžete použít DEFAULT klíčové slovo bez závorek pro explicitní vložení výchozí hodnoty do sloupce.
Zde je příklad:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT); Nyní vybereme tento řádek:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6; Výsledek:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
V obou případech vložil výchozí hodnotu pro příslušný sloupec. Na meal to byl Salad . Pro special_request sloupec, toto bylo NULL .
Sloupce bez možnosti Null
Jak již bylo zmíněno, pokoušíme se získat výchozí hodnotu z neNULLABLE sloupec, který nemá výchozí hodnotu, způsobí chybu.
Příklad:
SELECT DEFAULT(guest_id)
FROM guest_meals; Výsledek:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
Při vytváření tabulky jsme neposkytli výchozí hodnotu pro guest_id a také jsme jej nastavili na NOT NULL . Z tohoto důvodu se při pokusu o vrácení výchozí hodnoty zobrazí chyba.
Celočíselné sloupce pomocí AUTO_INCREMENT
Pro celočíselné sloupce pomocí AUTO_INCREMENT , návratová hodnota je 0 .
Jako příklad vytvoříme tabulku s AUTO_INCREMENT sloupec:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id sloupec používá INT (celé číslo) a je nastaveno na AUTO_INCREMENT .
Nyní vložte několik řádků:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Nyní vraťme výchozí hodnotu guest_id sloupec:
SELECT
DEFAULT(guest_id),
guest_id
FROM guest; Výsledek:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
DEFAULT(guest_id) ukazuje, že výchozí hodnota je 0 pro všechny řádky. guest_id sloupec zobrazuje skutečnou hodnotu, která byla vložena (která byla vygenerována pomocí AUTO_INCREMENT ).