У меня есть имя таблицы под названием "Лицо" со следующими именами столбцов
P_Id(int),
LastName(varchar),
FirstName (varchar).
Я забыл указать NOT NULL
Constraint на P_Id
.
Теперь я попытался со следующим запросом добавить NOT NULL
Constraint в существующий столбец с именем P_Id
,
1. ALTER TABLE Person MODIFY (P_Id NOT NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT NULL NOT NULL (P_Id);
Я получаю синтаксическую ошибку....
Ответ 1
Просто используйте ALTER TABLE... MODIFY...
запрос и добавьте NOT NULL
в существующее определение столбца. Например:
ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;
Предупреждение: вам нужно снова указать полное определение столбца при использовании запроса MODIFY
. Если ваш столбец имеет, например, значение DEFAULT
или комментарий столбца, вам нужно указать его в операторе MODIFY
вместе с типом данных и NOT NULL
, иначе он будет потерян. Самой безопасной практикой для защиты от подобных неудач является копирование определения столбца из вывода запроса SHOW CREATE TABLE YourTable
, изменение его для включения ограничения NOT NULL
и вставка его в ваш запрос ALTER TABLE... MODIFY...
.
Ответ 2
Попробуйте это, вы узнаете разницу между изменением и изменением,
ALTER TABLE table_name CHANGE curr_column_name new_column_name new_column_datatype [constrints]
ALTER TABLE table_name MODIFY column_name new_column_datatype [constraints]
- Вы выполняете операцию
MODIFY
для изменения, но наоборот невозможно.
- Вы можете изменить имя и тип данных для конкретного столбца, используя
CHANGE
.
- Вы можете изменить конкретный тип данных столбца с помощью
MODIFY
. Вы не можете изменить имя столбца, используя этот оператор.
Надеюсь, я подробно объяснил.
Ответ 3
Эта работа в shoul без каких-либо проблем, пожалуйста, используйте ее!
ALTER TABLE table_name MODIFY column_name INT(11) NOT NULL;