2017-12-25 8 views
0

DBに特殊なステータスを持つレコードがいくつかあります。t_status = 'T'とし、それぞれt_status = 'X'に、にt_moddateより45分古いものを更新したいとします。テーブルがアクセスされたときに更新スクリプトを実行するためにMariaDBで関数/プロシージャを作成するにはどうすればよいですか?

私はこれをMaria DBのストアドプロシージャに入れることはできますか?

私のテーブルには、以下のようになります。

テーブル名:テスト 列:t_id、t_status、t_moddate、t_usr_update

私は私の更新は以下のようなものです推測:

UPDATE TEST SET t_status = 'X' where t_status = 'T' and t_moddate <= now()- interval(45 minutes);

CREATE PROCEDURE myProc() 
    BEGIN 

     UPDATE TEST 
      SET t_status = REPLACE (first_name, 'T', 'X') 
     WHERE t_status = 'T' and t_moddate <= now()- interval 45 minute; 

    END$$ 

しかし、これをストアドプロシージャに入れてデフォルトで実行させるにはどうすればよいですか?

答えて

1

時間単位または任意の間隔で実行するEVENTを使用できます。 まず

CREATE EVENT somename 
    ON SCHEDULE EVERY '1' HOUR 
    STARTS '2017-25-12 00:00:00'  
DO 
UPDATE TEST 
     SET t_status = REPLACE (first_name, 'T', 'X') 
    WHERE t_status = 'T' AND t_moddate <= now()- interval(45 minutes); 
+1

がそのように動作し、適切なイベントを書き、それを

SET GLOBAL event_scheduler = ON; 

を有効にします。ありがとう、私は 'STARTS'属性を外さなければなりませんでした。間隔を「間隔45分」に変更する必要がありました。ありがとう – Cyber

関連する問題