No MariaDB,
DEFAULT() é uma função interna que retorna o valor padrão para uma coluna da tabela. Se a coluna não tiver valor padrão e for
NULLABLE , então NULL é devolvido. Se a coluna não tiver valor padrão e não NULLABLE , um erro é retornado. Sintaxe
A sintaxe fica assim:
DEFAULT(col_name) Onde
col_name é o nome da coluna para a qual retornar o valor padrão. Também pode ser usado sem os parênteses e o argumento em certos casos:
DEFAULT Essa sintaxe pode ser usada para definir explicitamente uma coluna com seu valor padrão.
Exemplo
Aqui está um exemplo para demonstrar como a função funciona.
Suponha que criamos uma tabela assim:
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
); Aqui, definimos um valor padrão para a
meal coluna. Especificamente, usamos DEFAULT 'Salad' para definir a refeição padrão para Salad . Isso usa o
DEFAULT cláusula do CREATE TABLE demonstração. Embora relacionado ao nosso propósito aqui (ele define o valor padrão para uma coluna), não deve ser confundido com o DEFAULT() função de que trata este artigo. Agora vamos inserir algumas linhas:
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'); Algumas dessas entradas indicam explicitamente qual refeição o convidado deseja, enquanto outras não. Os que não usarem apenas usarão a refeição padrão (
Salad ). Então agora vamos selecionar essas linhas da tabela. Incluiremos o
DEFAULT() função em nossa seleção:SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals; Resultado:
+----------+---------------+---------+--------------------------+-----------------+ | 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 | +----------+---------------+---------+--------------------------+-----------------+
O
DEFAULT(meal) coluna retorna os valores padrão e a meal coluna retorna os valores reais que foram inseridos. Da mesma forma, o
DEFAULT(special_request) coluna retorna os valores padrão para essa coluna e o special_request coluna retorna os valores reais que foram inseridos. Em relação ao
special_request coluna, não definimos um valor padrão para esta coluna e, portanto, o resultado é NULL . Observe que, se a coluna não for NULLABLE , receberíamos um erro (veja abaixo). Mas a coluna é NULLABLE , e assim o valor padrão de NULL devolvida. Inserindo explicitamente o valor padrão
Você pode usar o
DEFAULT palavra-chave sem parênteses para inserir explicitamente o valor padrão em uma coluna. Aqui está um exemplo:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT); Agora vamos selecionar essa linha:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6; Resultado:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
Em ambos os casos, inseriu o valor padrão para a respectiva coluna. Para a
meal coluna, era Salad . Para o special_request coluna, isso era NULL . Colunas não anuláveis
Como mencionado, tentando obter o valor padrão de um não-
NULLABLE coluna que não tem um valor padrão resulta em um erro. Exemplo:
SELECT DEFAULT(guest_id)
FROM guest_meals; Resultado:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
Quando criamos a tabela, não fornecemos um valor padrão para o
guest_id coluna, e também a definimos como NOT NULL . Por causa disso, recebemos um erro ao tentar retornar seu valor padrão. Colunas inteiras usando AUTO_INCREMENT
Para colunas inteiras usando
AUTO_INCREMENT , o valor de retorno é 0 . Como exemplo, vamos criar uma tabela com um
AUTO_INCREMENT coluna:CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
); O
guest_id coluna usa um INT tipo de dados (integer) e está definido como AUTO_INCREMENT . Agora insira algumas linhas:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge'); Agora, vamos retornar o valor padrão do
guest_id coluna:SELECT
DEFAULT(guest_id),
guest_id
FROM guest; Resultado:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
O
DEFAULT(guest_id) coluna mostra que o valor padrão é 0 para todas as linhas. O guest_id coluna mostra o valor real que foi inserido (que foi gerado pelo AUTO_INCREMENT ).