Colunas MySQL com padrão nulo - escolha estilística, ou é?

Em muitos tipos de SQL, existem três maneiras de definir implicitamente uma coluna como NULL em cada inserção de linha. Esses são

columnname type NULL
columnname type DEFAULT NULL
columnname type NULL DEFAULT NULL

ou seja, o primeiro define o sinalizador NULL (em oposição a NOT NULL), o segundo deixa o sinalizador NULL como o valor padrão e o terceiro define o sinalizador NULL e define o valor implícito como NULL.

Eu ouvi sobre como no Microsoft SQL, a segunda variação não é exatamente a mesma desde que você também pode personalizar o valor padrão do sinalizador NULL para tabelas ou esquemas.

Mas para o MySQL, não acredito que exista tal recurso. Além disso, no MySQL, colunas com o sinalizador NULL, diferentemente das colunas NOT NULL, sempre são definidas implicitamente como NULL na inserção se não houver um valor explícito, mesmo que o modo estrito esteja ativado. Então isso deixa todas essas declarações de coluna idênticas.

No meu script MySQL, para cada coluna NOT NULL, especifico um valor DEFAULT para colunas que eu não esperava configurar em algumas inserções em meu aplicativo, para evitar quaisquer problemas se eu fosse ativar o modo estrito. Assim, acho que seria mais simétrico se eu escolhesse a terceira variação, mesmo sendo a mais detalhada e explícita. Declarações como a terceira variação são comuns, ou a primeira ou segunda variação ocorre com mais frequência nos scripts de outras pessoas?

Eu estava pensando em inclinar-se para a segunda abordagem porque esse é o alias que o MySQL dump usa, mas não tenho certeza se essa é uma boa ideia, já que também descarta literais inteiros como strings (aspas simples) nas cláusulas padrão das declarações de coluna.

Esta pergunta pode parecer mais uma opinião do que uma que tenha uma solução, mas também quero estar ciente de quaisquer possíveis problemas que eu não conheço. Eu posso optar por migrar do MySQL para o PostgreSQL no futuro, e eu também poderia usar alguns conselhos desses especialistas, por exemplo. se o PostgreSQL distingue esses casos como o MS-SQL faz. Corrija-me se estiver errado se tiver feito alguma suposição incorreta.

questionAnswers(2)

yourAnswerToTheQuestion