在更新同一行中的其他字段时更新字段

时间:2013-07-31 06:47:43

标签: mysql sql database stored-procedures triggers

我有一个像这样的表:

user_level

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  

是否可以使用triggerprocedure。 我正在使用MYSQL

3 个答案:

答案 0 :(得分:1)

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

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

Sql Fiddle Demo

答案 1 :(得分:0)

尝试以下代码

create trigger AutoUpdateCurrentLevelFromUserLevel
after update
on UserLevel
for each row
set CurrentLevel="{your value here}"

答案 2 :(得分:0)

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

相关问题