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  

またはを使用することは可能ですtriggerprocedure。を使用して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 に答える