Как добавить ненулевое ограничение существующего столбца в MySQL5.1

У меня есть имя таблицы под названием "Лицо" со следующими именами столбцов

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;