Colonnes MySQL avec un choix de style null par défaut, ou est-ce?

Dans de nombreuses saveurs de SQL, il y a trois façons dont vous pouvez implicitement la valeur d'une colonne NULLE sur chaque ligne d'insertion. Ce sont

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

la première définit l'indicateur NULL (par opposition à NON NULLE), le second, les feuilles de l'indicateur NULL la valeur par défaut, et le troisième définit l'indicateur NULL et définit implicitement une valeur NULLE.

J'ai entendu parler dans Microsoft SQL, la deuxième variation est pas exactement le même puisque vous pouvez également personnaliser la valeur par défaut de l'indicateur NULL pour les tableaux ou des schémas.

Mais pour MySQL, je ne crois pas qu'il y est une telle fonctionnalité. En outre, dans MySQL, les colonnes avec l'indicateur NULL, contrairement à PAS NULL colonnes, sont toujours implicitement la valeur NULL à insérer si il n'y a pas de valeur explicite, même si le mode strict est activé. De sorte que les feuilles toutes ces colonne déclarations identiques.

Dans mon MySQL script, pour chaque colonne not NULL, - je spécifier une valeur par DÉFAUT pour les colonnes je ne m'attends pas à des insertions dans mon application, afin d'éviter tout problème si je devais activer le mode strict. Donc, je pense qu'il serait plus symétrique, si je devais choisir la troisième variation, même si il est le niveau le plus détaillé et explicite. Sont des déclarations comme la troisième variation commun, ou est-ce la première ou la deuxième variation de se produire plus fréquemment chez les autres scripts?

J'envisageais de penchant pour la seconde approche, parce que c'est l'alias de dump MySQL utilise, mais je ne suis pas sûr que ce soit une bonne idée car elle exporte également les littéraux entiers comme des chaînes de caractères (entre guillemets simples) dans des clauses de défaut de la colonne déclarations.

Cette question peut paraître plus l'opinion que celui qui a une solution, mais je veux aussi être au courant des éventuels problèmes que je ne suis pas au courant. J'ai peut choisir de migrer de MySQL vers PostgreSQL dans l'avenir, et je pouvais aussi utiliser quelques conseils de ces experts, par exemple, si PostgreSQL distingue ces cas comme MS-SQL. Corrigez-moi si je me trompe, si j'ai fait toutes les hypothèses incorrectes.

source d'informationauteur Kevin Jin