私は2つのテーブルを持っています。
テーブル A : (id, type, ...)
ここで id は主キーです
テーブル B : (id、timestamp、old_type、new_type、...)
ここで id は主キーではありません
A.type が最後の (タイムスタンプによる) B.new_type と同じではないような ID を返す SQL リクエストを作成したいと考えています。
試す:
select a.id, a.type
from A a
join (select id, max(`timestamp`) max_timestamp from B group by id) mb
on a.id = mb.id
join B b on mb.id = b.id and mb.max_timestamp = b.`timestamp`
where a.type <> b.new_type
トリガーを使用して、次のようなイベントをログに記録します (テストされていないコード):
CREATE TRIGGER logger BEFORE UPDATE ON A
FOR EACH ROW
BEGIN
IF NEW.Type <> OLD.Type THEN
INSER INTO B(id, timestamp, old_type, new_type, ...)
VALUES (id, CURRENT_TIMESTAMP, OLD.Type, NEW.Type, ...)
END IF;
END;
詳細については、ドキュメントを参照してください。