Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL adiciona uma coluna NOT NULL


No MySQL, cada tipo de coluna tem um "padrão implícito " valor .

Se uma coluna NOT NULL for adicionada a uma tabela , e nenhum DEFAULT explícito for especificado, o valor padrão implícito será usado para preencher os novos dados da coluna. Regras semelhantes se aplicam quando o valor DEFAULT é especificado.

Como tal, o DDL original produz os mesmos resultados que:
-- After this, data will be the same, but schema has an EXPLICIT DEFAULT
ALTER TABLE t ADD c varchar(10) NOT NULL DEFAULT ''
-- Now we're back to the IMPLICIT DEFAULT (MySQL stores NULL internally)
ALTER TABLE t ALTER c DROP DEFAULT

As configurações do modo "estrito" afetam as instruções DML que dependem de valores padrão, mas não afetam o uso padrão implícito quando a coluna é adicionada.

Aqui está uma "prova" do sqlfiddle esse modo estrito não se aplica à instrução ALTER TABLE .. ADD.

Este é um recurso do MySQL. Outros mecanismos, como o SQL Server, exigem uma restrição DEFAULT (ou coluna NULL) explícita para essas alterações de esquema.