UDATES であるテーブルのトリガーを作成しようとしています。複数のトリガーでこれを行うことができると思いましたが、MySQL は同じタイプの 1 つのテーブルで複数のトリガーをサポートしていないと思います。そのため、これを 1 つのトリガーに含めることを余儀なくされました。
基本的に、現在のテーブルで更新された内容に基づいて、別のテーブルに新しいレコードを挿入しようとしています。
これが私がこれまでに持っているもので、動作します:
BEGIN
-- Definition start
INSERT INTO prices (stationID, price, type,
prevPrice, prevDate, dateCreated, apiKey, uid)
VALUES(NEW.stationID, NEW.regPrice, 'reg', OLD.regPrice,
OLD.regDate, NEW.regDate, NEW.lastApiUsed, NEW.lastUpdatedBy);
-- Definition end
END
私がする必要があるのはtype
、ユーザーが与えるタイプに基づいて変更される可能性があることです。ユーザーは一度に 1 つのタイプしか更新できないためです。IF ステートメントについて考えていましたIF THEN
が、それを機能させる方法がわかりませんでした。IF
ステートメントで使用する列名の文字列値を使用できると考えていましたが、それが可能かどうかはわかりません。
このようなもの:
BEGIN
-- Definition start
IF(type == 'reg') THEN
INSERT INTO prices (stationID, price, type,
prevPrice, prevDate, dateCreated, apiKey, uid)
VALUES(NEW.stationID, NEW.regPrice, 'reg', OLD.regPrice,
OLD.regDate, NEW.regDate, NEW.lastApiUsed, NEW.lastUpdatedBy);
END IF;
-- Definition end
END