背景 最近、オンライン操作中に DML ステートメントを実行しました。これは絶対確実だと思っていましたが、アプリケーションは更新されず、データは変更されていないと報告しました。調査の結果、ステートメントを誤って記述したため、更新ステートメントの結果が期待と一致しないことが判明しました。 再現 デモンストレーションの便宜上、ユーザー テーブルを作成し、5 つのレコードを同時に挿入します。 テーブルユーザーを作成( id int(12) コメント 'ユーザー主キーID', name varchar(36) コメント 'ユーザー名', 年齢 int(12) コメント '年齢'); ユーザー値に (1,'one',11),(2,'two',12),(3,'three',13),(4,'four',15),(5,'five',15) を挿入します。 実行が完了すると、ユーザー テーブルのデータは次のようになります。 +------+-------+------+ | ID | 名前 | 年齢 | +------+-------+------+ | 1 | 一つ | 11 | | 2 | 2 | 12 | | 3 | 3 | 13 | | 4 | 4 | 15 | | 5 | 五 | 15 | +------+-------+------+ ここで、すべての年齢を 10 に、ユーザー名を user に変更する必要があります (この操作が意味をなすと仮定)。運用と保守に送信する DML ステートメントは次のようになります。 ユーザーを更新し、age=10 および name='user' を設定します。 ユーザー テーブルを更新すると、更新ステートメントを実行した後のテーブル内のすべてのデータが次のようになっていることがわかります。 +------+-------+------+ | ID | 名前 | 年齢 | +------+-------+------+ | 1 | 一つ | 0 | | 2 | 2 | 0 | | 3 | 3 | 0 | | 4 | 四 | 0 | | 5 | 五 | 0 | +------+-------+------+ 不思議なことが起こりました。年齢フィールドはすべて 0 に更新されましたが、名前フィールドはまったく変更されていませんでした。 原因と修正 エラーの原因は実は非常に単純で、更新ステートメントが正しく記述されていないことです。 MySQLのupdate文の構文は テーブル名の更新 SET 列1=値1、列2=値2、... ここで、some_column=some_value; ```sql 複数のフィールドを更新する場合、隣接するフィールドは `and` ではなくコンマで区切る必要があります。更新文が複数のフィールド間の区切りとして「and」を使用する場合、最初に運用保守に提出したように、この更新文は最終的に「```sql ユーザーを更新し、age=(10、name='user') を設定します。 ブール値の戻り値を持つ判断ステートメントとして、(10 and name='user') は 1 または 0 にマッピングされます。最初に更新された変数が誤ったデータに更新される可能性は 99.999% です。 正しい更新ステートメントは次のようになります ユーザーを更新し、age=10、name='user' を設定します。 レッスン DML ステートメントを送信する前に、テスト環境で基本的な SQL 構文を試して、正しく覚えていることを確認してください。 まとめ MySQLのupdate文の構文は テーブル名の更新 SET 列1=値1、列2=値2、... ここで、some_column=some_value; 以上がMySQLのupdate文を使用する際の落とし穴の詳細です。MySQLのupdate文の詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。 以下もご興味があるかもしれません:
|
<<: HTML DOM入門_PowerNode Javaアカデミー
ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...
Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決す...
目次1. 文法2. 例3. その他の関連方法長い間、reduce() メソッドの具体的な使い方を理解...
実際、これは非常に簡単です。imgにaタグを追加し、 <a href='tencent...
目次1. 手ぶれ補正2. スロットリング3. まとめ序文:フロントエンド開発者には、次の 2 つの要...
背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...
目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...
目次スクロールをスムーズにするBetterScrollのスクロール体験慣性ローリングエッジリバウンド...
目次1. インストールとインポート2. 手ぶれ補正機能を定義する3. チャートコードを描くinit ...
表示するデータが多い場合、1 つのチャートに表示しても効果はよくありません。このとき、2 つのチャー...
W3C は HTML の標準をいくつか確立していますが、ブラウザは独自の定義済みスタイルに従って W...
filterは通常、特定の値をフィルターするために使用されます。たとえば、フィールドが空だが、フロン...
この記事では、移行、バックアップ、アップグレードなどのシナリオで使用される Docker イメージの...
序文MySQL バージョン 8.0.23 では、新しい機能「Invisible Column (In...
1. 文書化ルール1. 大文字と小文字が区別されます。 2. 属性値は引用符(一重引用符または二重引...