INSERT ... ON DUPLICATE KEY UPDATE 插入或者更新一起写 。掉咋天
2015-09-07 15:17
519 查看
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;
向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作。这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求,如Oracle的merge语句,再如本文所讲的MySQL中的INSERT ... ON DUPLICATE KEY UPDATE语句。
该语句是基于唯一索引或主键使用,比如一个字段a被加上了unique index,并且表中已经存在了一条记录值为1,下面两个语句会有相同的效果:
$query = " INSERT INTO $tbQuickshortcut SET
id= '{$aUpdate['id']}',
pmode= '{$aUpdate['pmode']}',
pmodename = '{$aUpdate['pmodename']}',
api = '{$aUpdate['api']}',
version = '{$aUpdate['version']}',
isopen = '{$aUpdate['isopen']}',
paytab = '{$aUpdate['paytab']}',
otherpaytab = '{$aUpdate['otherpaytab']}',
funcname = '{$aUpdate['funcname']}',
location = '{$aUpdate['location']}',
starttime = '{$aUpdate['starttime']}',
endtime = '{$aUpdate['endtime']}',
utime = '{$time}'
ON DUPLICATE KEY UPDATE
pmode= '{$aUpdate['pmode']}',
pmodename = '{$aUpdate['pmodename']}',
api = '{$aUpdate['api']}',
version = '{$aUpdate['version']}',
isopen = '{$aUpdate['isopen']}',
paytab = '{$aUpdate['paytab']}',
otherpaytab = '{$aUpdate['otherpaytab']}',
funcname = '{$aUpdate['funcname']}',
location = '{$aUpdate['location']}',
starttime = '{$aUpdate['starttime']}',
endtime = '{$aUpdate['endtime']}',
utime = '{$time}' ";
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- LeetCode----Merge Two Sorted Lists
- 20150907
- 双击更新所有已安装的python模块
- android自动化工具之--Monkey log分析说明
- ios时间处理
- Tomcat实现多域名之间session共享
- Swift-边读边记-[1]
- 阅读《Android 从入门到精通》(2)——熟悉开发环境
- 1-4 Zabbix 用户管理
- linux(centos)下SVN服务器如何搭建
- python查询mysql,返回json
- 多线程之取钱
- Mac OS X 下安装 Ant
- 7、java5线程池之单一线程池newSingleThreadExecutor
- List 与 table 分组(group by )
- hadoop配置问题--jps线程不全
- 支付宝支付与微信支付服务端回调notify_url数据的区别
- 视频播放flvplayer插件的使用demo
- signal(SIGPIPE, SIG_IGN)作用