0

フィールドに適切な値の代わりに NULL を入れるイベントがありますが、手動で次々に実行されたリクエストは正常に機能します。

イベントは、MySQL のスケジューラを介して 10 秒ごとに実行されます。

ここに私のイベントのコードがあります:

BEGIN
DECLARE id INT;
DECLARE reqtype varchar(15);
SELECT t1.id into @id from ticket as t1, ticket_request as t2 , ticket_request as t3 WHERE t2.parent_request_id = t1.id and t3.id=t1.id  and t2.request_type<>t3.request_type order by t1.id desc LIMIT 1;
   IF @id > 0
   THEN
        select request_type into @reqtype from ticket_request where id=@id;
        update ticket_request as t set t.request_type=@reqtype where t.parent_request_id=@id;
   END IF;
END

さて、個別に、これらの要求は次のようになります。

SELECT t1.id from ticket as t1, ticket_request as t2 , ticket_request as t3 WHERE t2.parent_request_id = t1.id and t3.id=t1.id  and t2.request_type<>t3.request_type order by t1.id desc LIMIT 1;

出力 3118

select request_type from ticket_request where id=3118;

service_request を出力します。と...

update ticket_request as t set t.request_type='service_request' where t.parent_request_id=3318;

望ましい結果が得られます。子のリクエスト タイプは親で更新されます。

イベントが発生すると、すべて正常に動作しますが、更新によって t.request_type に NULL が設定されます。正しい子が更新され、その子だけが更新されます...したがって、更新が少なくとも部分的に機能していることはわかっています。

以前のデータはこちら

id      request_type        parent_request_id
3118    service_request     null
4556    incident            3118

そして、私が見たいもの

id      request_type        parent_request_id
3118    service_request     null
4556    service_request     3118

誰が何がうまくいかないのか考えていますか?

4

0 に答える 0