フィールドに適切な値の代わりに 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
誰が何がうまくいかないのか考えていますか?