Restrições de NOT NULL
Para poder suportar um fácil tratamento de tabelas não transacionais todos os campos no MariaDB têm valores padrão.
Se você inserir um valor 'errado' em uma coluna como um NULL
em uma coluna NOT NULL
ou um valor numérico muito grande em um campo numérico, o MariaDB irá atribuir a coluna o 'melhor valor possível' em vez de dar uma mensagem de erro. Para strings este valor é uma string vazia ou a maior string possível que possa estar na coluna.
Isto significa que se você tentar armazenar NULL
em uma coluna que não aceita valores NULL
, o MariaDB Server armazenará 0 ou ''
(strig vazia) nela. Este último comportamento pode, para uma simples inserção de registro, ser alterado com a opção de compilação -DDONT_USE_DEFAULT_FIELDS
.) Leia "Opções típicas do configure
". Isto faz com que as instruções INSERT
gerem um erro a menos que você explicite valores específicos para todas as colunas que exigem um valor diferente de NULL
.
A razão para as regras acima é que não podemos verificar estas condições antes da consulta começar a executar. Se encontrarmos um problema depois de atualizar algumas linahs, não podemos fazer um rollback já que o tipo de tabela não suporta isto. A opção de parar não é tão boa como no caso em que a atualização esteja feita pela metade que é provavelmente o pior cenário possível. Neste caso é melhor 'fazer o possível' e então continuar como se nada tivesse acontecido. No MariaDB 5.0 plenejamos melhorar into forncendo avisos para conversões automáticas de campo, mais uma opção para deixar você fazer um rollback das instruções que usam apenas tabelas transacionais no caso de tal instrução fizer uma definição de campo não permitida.
O mostrado acima significa que não se deve usar o MariaDB para verificar o conteúdo dos campos, mas deve se fazê-lo por meio da aplicação.