1

私は初めてでmysql、について読んでいましたduplicate key update。私たちが一般的に書くステートメントは次のようになります

insert into table (col1,col2) values(1,1) on duplicate key update col2=1;

col1を。と仮定しますprimary

これについての私の理解は、col1に重複する値がある場合、それぞれのステートメントがcol2を1で更新するということです。私の質問は、なぜkeyこのステートメントで「」という用語を使用するのかということです。ステートメントは、が存在する場合にのみ更新されることが理解されますprimary key violation。他に使用できるパラメータや関数はありますduplicateか?

ありがとう

4

2 に答える 2

2

MySQLは、プライマリキー違反または一意キー違反がある場合に更新します。マニュアルでは、別の章で例を挙げて非常に広範囲に説明しています。

ON DUPLICATE KEY UPDATEを指定し、UNIQUEインデックスまたはPRIMARY KEYに重複値を引き起こす行が挿入された場合、MySQLは古い行のUPDATEを実行します。

キーという用語は、構文定義の一部として使用されます。この用語は、ステートメントを実行する場合にのみ使用できますINSERTLOAD DATA他の方法でデータを挿入すると(私は今しか考えられません)、他のメカニズムが機能します。

于 2012-06-11T07:18:27.643 に答える
1

このコマンドには他のオプションはありません。さらに、この方法でステートメントを書き直すことができると言いたいです-

INSERT INTO table(col1、col2)VALUES(1、1)ON DUPLICATE KEY UPDATE col2 = VALUES(col2);

また、使用することができます:

つまり、INSERT + ON DUPLICATE KEY UPDATEは、1つのステートメントのINSERTおよびREPLACEのように機能します。そしてもう1つ、INSERT + ON DUPLICATE KEY UPDATEステートメントには大きな利点があり、更新時にレコードが削除されません。REPLACEステートメントは、新しいレコードを削除してから挿入します。

于 2012-06-11T07:19:20.690 に答える