我想创建的 sqlite3 触发器可能用 sql 实现,也可能不可用。涉及五个表:
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?是否可以将 WHEN 语句放在 FOR EACH 语句之前?