mysql存在编辑不存在新增_mysql修改操作之存在则修改,不存在则添加(2019-05-22)...

一. 起因

事情的起因是这样的,在练手项目的时候,表的一个关联字段并没有建立外键关系,只是名义上的外键关系,

而在修改数据的时候,考虑到安全性的问题,确保运行不会报异常的话,每次在做修改字段的时候,都需要先查

寻该字段是否存在,若不存在则需要主动添加。如以下的 userId,是并没有外键的!

c8c47e0fbc32

表大体结构图

二. 解决方式

如果每次都先查询再修改的话,是相当影响效率的,所以呢,mysql也帮我们准备好了解决方式,感谢mysql团队

1. ** 首先,你需要一个触发条件,也就是唯一索引啦,这是必要的!!! 譬如我想我的userId不重复,又想达到该效果,就需要把该字段设置为唯一索引,譬如:

c8c47e0fbc32

给userId添加唯一索引

2.  语法: duplicate keyinsert into 表名(字段1,userId,字段3,....) values(值1,值,值3,....) on duplicate key update 字段1=值1,字段2=值2 ....

怎么使用已经很明显了吧 :

insert into 表名(字段1,userId,字段3,....) values(值1,值,值3,....) 意思是,当userId不重复时,则会触发这个插入语句

update 字段1=值1,字段2=值2 ....  就是userId的值已经存在时,则触发这个修改语句

那么我的语句就是:insert into wallet (userId,cash,integration,cashStorage,createdAt) values(2,0,0,0,LOCALTIME()) on duplicate key update cash = cash + 0.01

3. 最后

顺带一提,可以在myBatis的xml文件中获取当前时间哦,使用  now()INSERT INTO wallet ( userId, cash, integration, cashStorage, createdAt)VALUES( #{userId}, 0, 0, 0, now())

学而时记之,人笨只能多写啦,加油哦!!!.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值