mysql中的批量更新

在Java编程中,使用MySQL进行批量更新时,通过Case When语句可能会遇到一个问题:当更新的目标值不在Case When的条件内,字段会被设置为NULL。如果该字段有NOT NULL约束,这会导致错误。解决方法是在Where条件中添加Tag IN()子句,或者在Case When中添加Else子句,确保不会超出范围。这两种策略可根据具体场景选择。
摘要由CSDN通过智能技术生成

对于mysql中的批量更新,站在java程序员的角度而言,可以使用分条更新、或者用case  when 这样的方式。

我就是使用的case when这样的方式。但是被提了一个bug,大体意思是这样

update a set tag=
case tag
when 1 then 11
end
where bId=12

嗯,有问题。

问题在于,bId是个逻辑外键,所以根据bId会查询出很多数据,比如查询出tag可以是[1,2,3]这个集合,但是2,3并不在上面的when情况中。这时候数据库就会将tag字段修改为null,此时tag字段如果做了not null的限制,就会报错。就会被提bug,呜呜呜~

那么解决方案的话,就是在where条件中加上tag in(),这样就不会超出范围了。或者在case语句中添加 else tag,代表如果没在范围内就不修改。可以根据情况自行选择。

好,就这些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值