MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

ALTER TABLEステートメントでNULL値を含む列にNOT NULL制約を適用するとどうなる?

MySQLで、すでにNULL値が含まれている列に対してALTER TABLEステートメントを使ってNOT NULL制約を適用しようとすると、エラーが返されます。具体的には「データが切り詰められた(data truncated)」ことを示すエラーメッセージが表示され、制約の変更は実行できません。

具体例

以下の例を見てみましょう。テーブル「test2」には、「ID」列の2行目にNULL値が格納されています。

mysql> Select * from test2;
+------+--------+
| ID   | Name   |
+------+--------+
| 1    | Gaurav |
| NULL | Rahul  |
+------+--------+
2 rows in set (0.00 sec)

この状態で、ID列をNOT NULLとして再定義しようとすると、MySQLは次のようなエラーを返します。

mysql> ALTER TABLE TEST2 MODIFY ID INT NOT NULL;
ERROR 1265 (01000): Data truncated for column 'ID' at row 2

このように、既存のNULL値がNOT NULL制約と矛盾するため、MySQLはエラー(ERROR 1265)を発生させて変更を拒否します。この問題を解決するには、先にUPDATEステートメントなどでNULL値を適切な値に置き換えてから、NOT NULL制約を適用する必要があります。

  1. MySQLで既存のテーブルにNOT NULL制約付きの新しいカラムを追加する方法

    すでに作成済みのテーブルに、NOT NULL制約を持つ新しいカラムを追加するには、ALTERコマンドを使用します。本記事では、実際にテーブルを作成し、NOT NULLカラムを追加して動作を確認する手順を解説します。 1. テーブルを作成する まずはサンプル用のテーブルを作成しましょう。以下のようにDemoTableを定義します。 mysql> create table DemoTable -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varcha

  2. MySQLでNULLを含む列からNULL以外(NOT NULL)の値だけを抽出して表示する方法

    MySQLのIS NOT NULLを使ってNULL以外の値のみを表示するMySQLで、NULLとNULL以外のレコードが混在する列からNULL以外の値だけを取得したい場合は、IS NOT NULL演算子を使用します。この記事では、実際にテーブルを作成しながら手順を解説します。1. テーブルの作成まず、日付型の列を持つサンプルテーブルを作成します。mysql> create table DemoTable1      (      DueDate date      ); Query OK, 0 ro