MySQL:忽略SQL事务中的约束

时间:2014-10-28 17:20:13

标签: mysql doctrine-orm constraints

对于multiple items的集合,我想更新项目的顺序。在MySQL中,我有一个约束(order + collection_id)是唯一的。因此,您不能在同一集合中的订单1处拥有两个商品。

但是,现在我想以“原子方式”更新项目的顺序。对于我的ORM,我使用新订单更新了所有实体并执行了刷新以将其写入数据库。 ORM将它们转换为多个查询,这直接导致MySQL的约束违规。

示例:

我有按顺序A,B,C的项目。所以A = 1,B = 2,C = 3。然后我用顺序C,B,A执行更新。所以C = 1,B = 2,A = 1。这是两个查询,第一个更新直接进入约束违规。在伪:

UPDATE item SET order=1 WHERE id=C

我的想法

是否可以启动事务,删除约束,然后应用所有更改并再次启用约束?如果启用失败,则回滚将确保所有内容都被撤回。

替代

另一种方法是完全删除约束,但我不是很喜欢解决方案:)

0 个答案:

没有答案