DEFAULT
é o valor que será inserido na ausência de um valor explícito em uma instrução de inserção / atualização. Vamos supor que seu DDL não tenha a NOT NULL
restrição:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault"
Então você poderia emitir essas declarações
INSERT INTO tbl (A, B) VALUES (NULL, NULL);
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, DEFAULT);
INSERT INTO tbl (A, B, col) DEFAULT VALUES;
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, NULL);
Como alternativa, você também pode usar DEFAULT
em UPDATE
instruções, de acordo com o padrão SQL-1992 :
UPDATE tbl SET col = DEFAULT;
UPDATE tbl SET col = NULL;
Observe que nem todos os bancos de dados oferecem suporte a todas essas sintaxes padrão SQL. Adicionar a NOT NULL
restrição causará um erro nas instruções 4, 6
, embora 1-3, 5
ainda sejam instruções válidas. Portanto, para responder à sua pergunta: Não, eles não são redundantes.
Mesmo com um valor padrão, você sempre pode substituir os dados da coluna por
null
.A
NOT NULL
restrição não permitirá que você atualize essa linha após ela ter sido criada com onull
valorfonte
Meu professor de SQL disse que se você especificar um
DEFAULT
valor eNOT NULL
ouNULL
,DEFAULT
sempre deve ser expresso antes deNOT NULL
ouNULL
.Como isso:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NOT NULL
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NULL
fonte
Eu diria que não.
Se a coluna aceitar valores nulos, não há nada que o impeça de inserir um valor nulo no campo. Até onde sei, o valor padrão só se aplica na criação de uma nova linha.
Com o conjunto não nulo, você não pode inserir um valor nulo no campo, pois isso gerará um erro.
Pense nisso como um mecanismo à prova de falhas para evitar nulos.
fonte