私が作成したい sqlite3 トリガーは、SQL では可能である場合と不可能である場合があります。5 つのテーブルが含まれます。
Members Groups GroupMembers Accounts
mId |name| accId gId | name | accId gId | mId accId | balance
Orders
oId | accId | ammount
誰かがグループを削除したときに、グループのメンバーごとにグループ残高の平均で注文したいです。したがって、次のようにする必要があります。
CREATE NEW TRIGGER triggername
BEFORE DELETE ON Groups
WHEN ((SELECT balance FROM Accounts WHERE accId=OLD.accId) = 0)
FOR EACH ROW IN
(SELECT accId
FROM GroupMembers JOIN Members ON GroupMembers.mId = Members.mId
WHERE GroupMembers.gId = OLD.gId)
BEGIN
INSERT INTO Orders(accId,ammount) VALUES(accId,
(SELECT balance FROM Accounts WHERE accId = OLD.accId)
/
(SELECT SUM(mId) FROM GroupMembers WHERE gId = OLD.gId)
);
END
問題は、トリガーが適用されるテーブル以外のテーブルに FOR EACH ROW を作成することは可能かということです。FOR EACH ステートメントの前に WHEN ステートメントを置くことは可能ですか?