2

我有一个这样的表:

用户级别

uid | level_order | current_level
---------------------------------
1   | 1,2,3       | 1
2   | 4,5,6       | 4
3   | 7,8,9       | 7

现在,如果我更新特定用户的 level_order 字段,我想使用触发器或过程更新 current_level。

例如,如果我运行这个查询:
update user_level set level_order = '21,22,23' where uid=1;
那么表应该像这样更新:

    uid | level_order | current_level
    ---------------------------------
    1   | 21,22,23    | 21
    2   | 4,5,6       | 4
    3   | 7,8,9       | 7  

是否可以使用triggeror procedure。我正在使用MYSQL.

4

3 回答 3

1

我认为您不需要触发器。您可以像这样直接更新它。

   update user_level 
           set level_order = '21,22,23', 
           current_level=SUBSTRING_INDEX('21,22,23', ',', 1) 
           where uid=1;

Sql 小提琴演示

于 2013-07-31T07:00:11.327 回答
0

试试下面的代码

create trigger AutoUpdateCurrentLevelFromUserLevel
after update
on UserLevel
for each row
set CurrentLevel="{your value here}"
于 2013-07-31T06:55:29.763 回答
0

您可以使用触发器来实现相同的目的。触发器在您上面提到的用于实现约束的场景中非常有用。使用相同的更新触发器。您还可以在查询本身中嵌入对新行的更新。

于 2013-07-31T06:56:04.537 回答