Eu tenho a seguinte definição de tabela:
CREATE TABLE `invite` (
`id` varchar(255) CHARACTER SET utf8 NOT NULL,
`email` varchar(255) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uc_i_e` (`email`)
)
Meu objetivo com a restrição not null id
é garantir que não haja valores nulos como a chave primária e, finalmente, falhar na inserção.
No entanto, não especificar o id na inserção funciona bem:
INSERT INTO invite (`email`) VALUES ('[email protected]');
Há um aviso 1364 especificando Field 'id' doesn't have a default value
, mas a inserção é bem-sucedida.
Parece que o MySQL está usando a restrição not null para transformar isso em um valor não nulo (em branco) na inserção.
Se eu realmente especificar null
como um valor de id
, a inserção falhará conforme o esperado.
Sem ter um gatilho para interromper a inserção de strings vazias, como posso impedir que esse cenário aconteça, ou seja, forçar um valor de string não vazio a ser especificado?