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完全不一样,所以记录下来以作提醒

 

posted @ 2010-11-12 19:51  神龙升空  阅读(366)  评论(0)    收藏  举报