#sql #mariadb #ddl
#sql #mariadb #ddl
Вопрос:
Этот пример взят из базы знаний MariaDB:
CREATE TABLE t1 (
a INT UNSIGNED AUTO_INCREMENT PRIMARY_KEY,
b VARCHAR(20) NOT NULL UNIQUE
);
ALTER TABLE t1 MODIFY b VARCHAR(40);
- Все
b
еще будетNOT NULL
после этого утверждения? b
К нему по-прежнему будет привязано ограничение уникальности?
Предположим, что используется последняя версия MariaDB.
Ответ №1:
После самостоятельного тестирования я пришел к выводу, что:
b
атрибут не будет сохраненNOT NULL
; он сбрасывается на значение по умолчанию, позволяющее использовать нули.- Ограничение уникальности остается.
По-видимому, я также полностью упустил из виду тот факт, что база знаний объясняет это поведение: https://mariadb.com/kb/en/alter-table/#modify-column
Комментарии:
1. Подумайте об этом так: (1) индексация отделена от определения столбца, но (2) атрибуты должны быть указаны при
MODIFYing
(илиCHANGEing
) столбце.