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


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

P_Id(int),
LastName(varchar),
FirstName (varchar).

Я забыл дать NOT NULL ограничения P_Id.

теперь я попытался со следующим запросом добавить NOT NULL ограничение на существующий столбец называется P_Id,

1. ALTER TABLE  Person MODIFY  (P_Id NOT  NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT  NULL NOT NULL (P_Id);

Я получаю синтаксическую ошибку....

2 114

2 ответа:

просто использовать ALTER TABLE... MODIFY... запрос и добавить NOT NULL в существующее определение столбца. Например:

ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;

слово предостережения: вам нужно указать полное определение столбца при использовании MODIFY запрос. Если ваш столбец имеет, например,DEFAULT значение или комментарий столбца, вы должны указать его в MODIFY заявление вместе с типом данных и NOT NULL, или он будет потерян. Самая безопасная практика, чтобы защититься от таких неудачи заключается в том, чтобы скопировать определение столбца из выходных данных a SHOW CREATE TABLE YourTable запрос, измените его, чтобы включить NOT NULL ограничение, и вставьте его в свой ALTER TABLE... MODIFY... запрос.

попробуйте это, вы будете знать разницу между изменением и изменить,

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. Вы не можете изменить имя столбца с помощью этой инструкции.

Надеюсь, Я объяснил хорошо в деталях.