帅帅男孩 发表于 2015-12-28 08:26:54

mysql INSERT ... ON DUPLICATE KEY UPDATE语句在perl下的使用

  INSERT ... ON DUPLICATE KEY UPDATE是mysql自带的一个功能。通过它可以在插入数据时自动判断该数据是否主键冲突。
  如果主键冲突则自动执行更新语句。
  例句如下:
  


CREATE TABLE ipstat(ip int UNSIGNED NOT NULL PRIMARY KEY,
                        hits int UNSIGNED NOT NULL,
                        last_hit timestamp);
INSERT INTO ipstat VALUES(inet_aton('192.168.0.1'),1,now())
                      ON duplicate KEY UPDATE hits=hits+1;
  
  
  当我们在c#中执行该语句时一般会通过绑定的方式传递参数


SQL:
INSERT INTO ipstat VALUES(?ip_address,?num,now())
ON duplicate KEY UPDATE hits=hits+?num;

C#:
dins.SetParameter("?ip_address", ip_address);
dins.SetParameter("?num", num);  
  
  最近在perl中使用该语句时发现需要这样写


SQL:
INSERT INTO ipstat VALUES(?ip_address,?num,now())
ON duplicate KEY UPDATE hits=hits+VALUES(hits);

perl:
database::Execute($ip_address, $num);  
  c#和perl完全不一样,所以记录下来以作提醒
  
页: [1]
查看完整版本: mysql INSERT ... ON DUPLICATE KEY UPDATE语句在perl下的使用