Столбцы MySQL с нулевым стилистическим выбором по умолчанию или нет?

Во многих разновидностях SQL существует три способа, которыми вы можете неявно устанавливать столбец в NULL при каждой вставке строки. Это

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

то есть первый устанавливает флаг NULL (в отличие от NOT NULL), второй оставляет флаг NULL равным значению по умолчанию, а третий устанавливает флаг NULL и устанавливает неявное значение как NULL.

Я слышал о том, что в Microsoft SQL второй вариант не совсем тот же, поскольку вы также можете настроить значение по умолчанию флага NULL для таблиц или схем.

Но для MySQL я не верю, что есть такая функция. Кроме того, в MySQL столбцы с флагом NULL, в отличие от столбцов NOT NULL, всегда неявно устанавливаются в NULL при вставке, если нет явного значения, даже если включен строгий режим. Таким образом, все эти объявления столбцов остаются идентичными.

В моем сценарии MySQL для каждого столбца NOT NULL я указываю значение DEFAULT для столбцов, которые я не ожидаю установить в некоторых вставках в моем приложении, чтобы избежать каких-либо проблем, если бы я включил строгий режим. Таким образом, я чувствую, что было бы более симметрично, если бы я выбрал третий вариант, даже если он является самым многословным и явным. Являются ли объявления, подобные третьему варианту, общими, или же первый или второй вариант встречаются чаще в других »? скрипты?

Я рассматривал возможность использования второго подхода, потому что это псевдоним, который использует дамп MySQL, но я не уверен, что это хорошая идея, поскольку он также сбрасывает целочисленные литералы как строки (одинарные кавычки) в предложениях по умолчанию для объявлений столбцов ,

Этот вопрос может показаться большим мнением, чем тот, у которого есть решение, но я также хочу знать о любых потенциальных ошибках, о которых я не знаю. Я могу выбрать в будущем миграцию с MySQL на PostgreSQL, и я также мог бы воспользоваться некоторыми советами этих экспертов, например, если PostgreSQL различает эти случаи, как это делает MS-SQL. Поправь меня, если я ошибаюсь, если я сделал какие-то неверные предположения.

Ответы на вопрос(2)

Ваш ответ на вопрос