java - sql 插入或更新的语句为什么不推荐使用?

查看:114
本文介绍了java - sql 插入或更新的语句为什么不推荐使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有一个插入或更新的需求,记得在hibernate里面用过creatOrUpdate的方法,尝试着写一条sql解决这个问题,如下:

INSERT INTO 表 (字段1,字段2) VALUES (值1,值2) ON DUPLICATE KEY UPDATE 字段2=VALUES(字段2)

可是问过几个很有经验的人,都说这种方式不好。

各位大神能综合讲一下优劣吗?

解决方案

除非,有非常特殊的理由,否则不要使用这些乱七八糟的方法。

正确的更新一行数据的通用方法(通用的意思是对于所有主流的关系型数据库都可行):

1.查询并使用行级排他锁,把查询到的结果放入缓存。

2.对缓存做验证,处理掉结果数量为0与结果数量大于1的情况。

3.此时就只剩结果数量等于1的情况了。把结果的值取出,做提前验证。举例:假设值为金额,要对金额做减去1元的操作,此时就要验证金额是否大于1元。

4.对值做计算,并更新原值。

5.提交。

这篇关于java - sql 插入或更新的语句为什么不推荐使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆