次の列名を持つ「Person」というテーブル名があります
P_Id(int),
LastName(varchar),
FirstName (varchar).
NOT NULL
に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);
構文エラーが発生しています...
ALTER TABLE... MODIFY...
クエリを使用し、既存の列定義にNOT NULL
を追加するだけです。例えば:
ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;
注意事項:MODIFY
クエリを使用する場合は、full列定義を再度指定する必要があります。たとえば、列にDEFAULT
値または列コメントがある場合、データ型とNOT NULL
とともにMODIFY
ステートメントで指定する必要があります。指定しない場合、失われます。このような事故を防ぐ最も安全な方法は、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
を使用して、特定の列のデータ型を変更できます。このステートメントを使用して列の名前を変更することはできません。希望、私は詳細に説明しました。