我正在尝试通过以下查询更新表
update MY_Table set NS_LEFT = NS_LEFT + 10 where NS_THREAD = 1 and NS_LEFT > 652
在MariaDb上执行此查询时,出现异常
ERROR org.hibernate.util.JDBCExceptionReporter - (conn=194) Duplicate entry '1-652' for key 'IX1_MY_Table'
唯一索引-
CREATE UNIQUE INDEX IX1_MY_Table ON MY_Table (NS_THREAD asc, NS_LEFT asc);
MariaDb版本:10.2.11-MariaDB
JDBC驱动程序版本:2.4.1
这个问题的可能原因是什么,我该如何解决呢?在另一个数据库中,它正以charm(在MySql中)工作,为什么它仅在MariaDB中失败。我共享的查询对于所有数据库都是通用的,并且真的不认为查询存在问题,也不想更改此查询,我经历了几乎所有可能的事情,这些事情是由不同的博客建议的,但是没有任何作用
请提出一些解决方法或修复该问题
答案 0 :(得分:0)
以下查询对我有用
UPDATE MY_Table ... AND NS_LEFT > 652 ORDER BY NS_LEFT DESC;
但是我仍然感到困惑,为什么在MariaDB情况下我们需要排序,但是其他数据库确实支持常规更新查询。