我想在MySql表中更新语句 - 只是将数据从一个用户迁移到第二个用户。只有具有相同唯一ID devid
的行尚未存在时,才应该迁移具体行。更新MySql表 - 在更新过程中测试一个字段的唯一性
,我使用的更新语句是:
update userdata as userdata1 set userid=${newuser}
where
userid=${olduser} and
userdata1.devid !=
(select devid from userdata as userdata2
where
userdata2.userid = ${newuser} and userdata2.`devid` = userdata1.`devid`)
MySQL的返回:
You can't specify target table 'userdata' for update in FROM clause
但是从另一种方式,类似的SELECT语句的作品,或类似的更新语句,当我测试数据在另一张同样的桌子上工作。那么这是一些限制,在更新期间不可能在同一张桌面上进行选择?以及如何管理这个?
感谢,
英德日赫
难道一个'UNIQUE KEY'是相当有帮助吗? – glglgl
我有UNIQUE KEY约束,但是这只防止不会发生多次具有相同的DEVID,但是我需要管理更新而不尝试这样做,因为整个查询将随着违反约束而失败。 – sarsonj