INSERTとUPDATEの違いは、ユニークキーです。一意のキーをたくさん定義することができます。あるキーに重複がある場合、UPDATEに移動します。
あなたはウィッヒあなたに重複キーエラーに対するエラーON DUPLICATEがサンプル
テーブル
MariaDB [yourschema]> show create table dup;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dup | CREATE TABLE `dup` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`a` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)
ここ
の作品を与える「のINSERT INTO "ノーマル" を持っている場合1行挿入
MariaDB [yourschema]> insert into dup (id,a) VALUES(1,5);
Query OK, 1 row affected (0.04 sec)
* ON DUPLICATE KEY
MariaDB [yourschema]> insert into dup (id,a) VALUES(1,5) ON DUPLICATE KEY UPDATE a=a+VALUES(a);
Query OK, 2 rows affected (0.01 sec)
とINSERT再び同じ挿入=エラー
MariaDB [yourschema]> insert into dup (id,a) VALUES(1,5);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
MariaDB [yourschema]>
MariaDB [yourschema]> select * from dup;
+----+------+
| id | a |
+----+------+
| 1 | 5 |
+----+------+
1 row in set (0.01 sec)
**テーブルを参照し、再度テーブルを参照してください - フィールドaを追加します
MariaDB [yourschema]> select * from dup;
+----+------+
| id | a |
+----+------+
| 1 | 10 |
+----+------+
1 row in set (0.01 sec)
MariaDB [yourschema]>
USAGE
DUPLICATE KEY ON INSERT INTOの正しい使い方は....です:
INSERT INTO table (unique_key, column_1, column_2)
VALUES (?,?,?)
ON DUPLICATE KEY UPDATE
value_1 = VALUES(column_1), value_2 = VALUES(column_2)";
あなただけ挿入するために準備し、そのことが可能のため3引数を使用します行数を増やす
INSERT INTO table (unique_key, column_1, column_2)
VALUES (?,?,?),(?,?,?)
ON DUPLICATE KEY UPDATE
value_1 = VALUES(column_1), value_2 = VALUES(column_2)";
DUPLICATE KEY UPDATE ON変更この COLUMN_1 =、COLUMN_2 = "; – JYoThI