コンピューター, データベース
「落とし穴」DML-チームアップデートのMySQL
DML-オペレータに直面してデータベースを操作しなければならなかったすべてのプログラマ、(英語からの翻訳は- ..「データ操作言語」)などを選択し、 挿入など、 削除します と アップデート。 MySQLの輸送はまた、上記のコマンドのすべての工廠を使用しています。
これらの記述は、論理的に彼の任命について話している - レコードを選択し、新しい値を挿入し、既存のデータを更新し、完全な、または指定された条件は、データベース内の情報の削除に合わせて。 理論的な研修教材を詳細に各コマンドとその構文の動作原理を説明したが、どこにも使用中に実際に発生する可能性の困難への参照が見つかりません。 この材料は、それらのいくつかの検討に専念されます。
DML-文について簡単に説明(挿入)
さらに進む前に、各関数の目的についての詳細を思い出して、再び必要です。 インサート :私たちは、より詳細に興味を持って2つの演算子を持つことになります と それが彼らに依存しているため、更新は、大量のデータを処理する際に、主要な困難を導き出します。
あなたは、コマンド挿入で始まり、その後徐々にUpdateに移動しなければなりません。 MySQLのシステムは、他の近代的なデータベースと同様に、既存のテーブルに新しいレコードを追加するために挿入操作を使用 するデータベース。 この操作の構文は非常にシンプルで簡単です。 テーブルの名前 - - それは値に行われるフィールド、先のリストが含まれており、すぐにデータのリストを発表しました。 [ 挿入データベースを実行するたびに新しい値で更新されます。
UPDATEステートメント
しかし、実際には、かなり頻繁にデータ1つ以上の属性値のいくつかのセットのために更新される状況があります。 例として、同社は主要部門のさらなる改名して改革した状況。 このケースでは、各部門の変更を行うことが必要です。 名前のみを変更する場合、問題は非常に迅速に解決することができます。 しかしながら、通常は、主キーとして機能全体の生産、の各成分の符号化を変更する場合は、今度は、情報および各従業員の変更を伴います。
アップデート - DML-オペレータは、この問題を解決するために適用することができます。 多数のエントリで動作はmysql-サーバは、UPDATE文の助けを借りて、必要なクエリを実行し、問題を解決します。 しかし、時には更新が複雑さを説明するのは非常に明確では難しいことではありません中に発生します。 それが更新されたレコードの困難を引き起こすもので、さらに議論されます。
少し何が理論的に言われています...
更新チームは、上記のように、テーブル内の既存のレコードを更新するために使用されます。 しかし実際には、データベースサーバにアクセスするクライアントは常に知られていない、テーブルまたはないでデータの特定のセットがあります。 予備時間がかかり、サーバ機能の無駄で結果のその後の更新のためにデータベース内のデータの可用性を確認してください。
挿入*更新、挿入または更新が互いに独立して行うことができるに-特別なデータベースMySQLの構造で、これを避けるために。 テーブルには、特定の条件のエントリを持って更新されたときにそれはあります。 考える条件は、データが見つからない場合は、MySQLサーバは、データのアップロード要求を行うことが可能です。
重複がある場合にデータを更新
このインサートの重要な要素- MySQLデータベース管理システムへの要求-接頭辞«ON DUPLICATE KEY UPDATEを»の 。 次のようにクエリの完全な構文は次のとおりです。«TEST_TABLE(employer_id、挿入名)の値( 1、 『アブラモフ』)重複キーで NOW = LAST_MODIFIED更新(); 」。
そのような要求は、例えば、時間間隔と検出遅延をカウントすることにより、続いて、交差点通過時の企業を決定するのアクションを記録するために使用することができます。 ためには、テーブルに一定の更新と記録を保持するために、各従業員のための十分な数の記録を、作成しません。 これは、重複チェックのデザインがそれを可能にします。
実際の問題...
問題は、典型的には、主キー値(プライマリ _ キー)を埋めるために使用される使用samouvelichivayuschihsya(オート インクリメント_)フィールド、であるように、入口の登録スタッフの行動の上記の例を考慮します。 [ 挿入したデザインでのMySQLの更新コマンドを使用している場合 オート _ 増分は、フィールドが絶えず増加しています。
重複検出の場合の交換工事を使用した場合同様に、すべてが起こります。 「自動インクリメント」値であっても、それが必要とされていない場合には増加しています。 このため、問題はその後、データベース管理システムの誤動作につながるオーバーフローパス値または範囲を生じます。
ほとんどの場合、問題
それは、マルチユーザーシステム(ウェブサイト、ポータル、など。P.)の中で最も一般的であるように、システムが手続き多数の挿入を実行した場合の問題は、ウェブ開発者を考慮する必要がありますについて説明します そして、MySQLを更新します。
PHP -非常に頻繁に行っベースにアピールします。 そのため、AUTO_INCREMENTとして定義された最大マージンを達成するために、急速に起こり、そしてちょうどその理由を確立するために、遭遇する困難の分析では動作しません。
そのため、開発者は、コマンドのMySQLの更新で重複キーのデザインの使用に気配りすることが奨励されています。 選択-クエリは、データベースサーバがエラーなしで動作するアクセスしたときに、データベースに新しいレコードを追加するには、深刻な問題への将来のリードで不快な状況をはらんでいます。 あるいは、自動インクリメントフィールドが最初に自分の記録をチェックして、更新され、それらを保持するために推奨されます。
Similar articles
Trending Now