我有一张桌子,我们可以称之为甲板。甲板有一个 id 用作其主键以及其他一些属性。卡片表包含一个对卡片组 ID 的外键引用,并且还有一个主键 cardid。存在另一个名为 answers 的表,其中它的外键是 cardid。
因此,为了从套牌中删除,数据库要求我先从答案中删除,然后是卡片,最后从套牌中删除。
我想创建一个触发器来处理第一次和第二次删除,这样我只需要从卡组表中指定一个删除语句即可完全销毁卡组。
下面是我找到的一个示例 PostgreSQL 触发器,但我不确定它是否可以做我所要求的,因为我无法在网上找到任何人以这种方式创建触发器的示例。
CREATE OR REPLACE FUNCTION autoCalculate() RETURNS TRIGGER AS $$
BEGIN
IF NEW.wins < 0 THEN
RAISE EXCEPTION 'Wins cannot be negative';
END IF;
IF(OLD.wins <> NEW.wins_ OR (OLD.losses <> NEW.losses) THEN
NEW.Winning_Percentage := calc_winning_percentage(NEW.Wins, NEW.Losses);
END IF
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER update_winning_percentage ON standings;
CREATE TRIGGER update_winning_percentage BEFORE INSERT OR UPDATE ON standings
FOR EACH ROW EXECUTE PROCEDURE autoCalculate();
如果有人知道这样做,如果他们可以将我推向正确的方向或提供如何做到这一点的示例,我将不胜感激!