web-dev-qa-db-ja.com

存在する場合、行の値をインクリメントします。それ以外の場合、値を使用して行を作成しますか?

以下は、私が使用しているMySQLテーブルのレイアウトです。基本的に、Webサイトのフロントエンドで発生するビュー、ウォッチャー、および照会を増やしたいと思います。私の質問は、IDへの最初の訪問時にインスタンスの新しい_views行を作成するにはどうすればよいでしょうか:MySQL挿入で1106または1107?

 IDキー値
 ----- ----- ------ 
 1104 _reserve 10000 
 1104 _views 100 
 1104 _watchers 2 
 1104 _inquiries 1 
 1105 _reserve 1500 
 1106 _reserve 24000 
 1106 _views 236 
 1107 _reserve 45300 
5
Jerry Tunin
INSERT INTO mytable (ID,`key`,`value`) VALUES (1106,'_views',1)
ON DUPLICATE KEY UPDATE `value` = `value` + 1;

そして

INSERT INTO mytable (ID,`key`,`value`) VALUES (1107,'_views',1)
ON DUPLICATE KEY UPDATE `value` = `value` + 1;

テーブルにvalueが次のように定義されている場合

CREATE TABLE mytable
(
   ...
   value INT DEFAULT 1,
   ...
);

その後、INSERTは

INSERT INTO mytable (ID,`key`) VALUES (1106,'_views')
ON DUPLICATE KEY UPDATE `value` = `value` + 1;

そして

INSERT INTO mytable (ID,`key`) VALUES (1107,'_views')
ON DUPLICATE KEY UPDATE `value` = `value` + 1;
5
RolandoMySQLDBA