DEFAULT
это значение, которое будет вставлено при отсутствии явного значения в операторе вставки / обновления. Предположим, у вашего DDL не было NOT NULL
ограничения:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault"
Тогда вы могли бы выпустить эти заявления
INSERT INTO tbl (A, B) VALUES (NULL, NULL);
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, DEFAULT);
INSERT INTO tbl (A, B, col) DEFAULT VALUES;
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, NULL);
В качестве альтернативы вы также можете использовать операторы DEFAULT
in в UPDATE
соответствии со стандартом SQL-1992 :
UPDATE tbl SET col = DEFAULT;
UPDATE tbl SET col = NULL;
Обратите внимание, что не все базы данных поддерживают все эти стандартные синтаксисы SQL. Добавление NOT NULL
ограничения вызовет ошибку с операторами 4, 6
, пока 1-3, 5
они остаются действительными. Итак, чтобы ответить на ваш вопрос: нет, они не лишние.
Даже со значением по умолчанию вы всегда можете переопределить данные столбца с помощью
null
.NOT NULL
Ограничение не позволит вам обновить эту строку после того, как она была создана сnull
значениемисточник
Мой учитель SQL сказал, что если вы указываете и
DEFAULT
значение, иNOT NULL
илиNULL
,DEFAULT
всегда следует выражать доNOT NULL
илиNULL
.Как это:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NOT NULL
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NULL
источник
Я бы сказал, что нет.
Если столбец принимает нулевые значения, то ничто не мешает вам вставить в поле нулевое значение. Насколько мне известно, значение по умолчанию применяется только при создании новой строки.
Если не установлено значение NULL, вы не можете вставить значение NULL в поле, так как это вызовет ошибку.
Думайте об этом как об отказоустойчивом механизме предотвращения нулевых значений.
источник