原子地改变mySQL中的多行

时间:2011-03-24 19:54:34

标签: mysql atomic-swap

我有一个表格

的mySQL表

entryID (PK), UserID, entryName

每个用户(由其userID定义)可以在此表中创建任意数量的条目,但对于每个用户,entryName必须是唯一的。我想允许用户一次修改所有的entryNames。因此,我将向用户显示一个表单,其中包含多个可以编辑的entryName字段。

问题在于尝试将其提交到数据库时。我不能像行一样逐行更新:

1, 1, Entry1
2, 1, Entry2

成为

1, 1, Entry2
2, 1, Entry3
尝试将Entry1重命名为Entry2时,

会导致错误。目前,我使用给定的UserID读取所有行,然后删除它们,并重新创建每一行。这有效。但是,该方法的问题在于,如果用户设法在我的脚本中导致错误,则他的所有条目都将被删除...并丢失。这是一件坏事。如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这是EXCEPTION上的TRANSACTION WITH ROLLBACK的典型场景。

您可以从这里开始:http://dev.mysql.com/doc/refman/5.0/en/commit.html