1

私はこれがどのように起こっているのか理解できません、多分あなたたちは私を助けることができます!

「nameNOTNULL」のユーザーテーブルがあります。

これは私にエラーを与えます。

INSERT INTO `user` (name) values (NULL);`

これは機能し、名前をに設定し''ます。

UPDATE `user` SET name=NULL WHERE id = '1'

なぜ更新できるのですか?挿入しようとしたときに同じエラーが表示されないのはなぜですか?

4

3 に答える 3

3

MySQLを使用している場合、これはバグではなくバグです。 http://bugs.mysql.com/bug.php?id=33699 修正された後、修正が元に戻されました。

元のレポートはバグではないと判断されたため、この変更は元に戻されました。UPDATEステートメントでNOT NULL列にNULLを割り当てると、厳密なSQLモードでのみエラーが発生し、それ以外の場合は警告付きで列を暗黙のデフォルトに設定する必要があります。これが元の動作でした。

于 2012-05-31T16:08:52.140 に答える
0

空のテーブルから開始していると仮定して、null名のユーザーを挿入しようとしてエラーが発生した場合、テーブルはまだ空です。updateコマンドではエラーは発生しませんが、IDが1の行がないため、行は変更されていません。次の手順を実行すると、エラーが発生するはずです。

INSERT INTO user (id, name) VALUES (1, "blah")
UPDATE user SET name=NULL WHERE id=1

編集:ああ...あなたは私が私の答えを書いている間にあなたの質問を更新しました。その場合、名前列のデフォルトとして空の文字列がありますか?それを使用している可能性があります。

于 2012-05-31T15:56:06.833 に答える
0

更新できません。WHEREステートメントで一致するものが見つからなかった場合にのみ、クエリを実行できます。その場合、クエリは行を更新しようとしないため、エラーは発生しませんでした。

于 2012-05-31T15:57:25.077 に答える