如何将递增的值分配给Insert-ed,Updated-ed行

时间:2014-06-06 09:32:14

标签: mysql sql triggers

我有一个名为Users的表,我有一个editVersion列。

+----+------+-------------+
| id | name | editVersion |
+----+------+-------------+
|  1 | John |           1 |
+----+------+-------------+

添加新用户后,我想为他们分配最高的editVersion,如

+----+------+-------------+
| id | name | editVersion |
+----+------+-------------+
|  1 | John |           1 |
|  2 | Jane |           2 |
+----+------+-------------+

在对任何用户进行每次编辑之后,我想在editVersion列中为它们分配最高的editVersions。就像John的名字改为John Doe一样,他的editVersion将改为

+----+----------+-------------+
| id | name     | editVersion |
+----+----------+-------------+
|  1 | John Doe |           3 |
|  2 | Jane     |           2 |
+----+----------+-------------+

我的问题是如何在不必查询Max(editVersion)表的情况下执行此操作。我可以使用触发器吗?如果是这样,怎么样?

或者我可以编写一个sql Update,在设置字段的同时,我还可以获取Max(editVersion),增加它并分配给editVersion?

1 个答案:

答案 0 :(得分:1)

我不确定这种功能的目的是什么。但如果明确更新此editVersion字段,则可能会失败。

建议

  1. 在桌面上撰写BEFORE定时INSERTUPDATE触发器。
  2. 选择MAX( editVersion ) + 1到局部变量。
  3. 将本地变量值设置为NEW.editVersion