SQLite 在一个 table 上触发,用于递增和递减列其他 table

SQLite Trigger on one table for increment and decrement column other table

所以我有两个 table,我想在一个 table 上增加或减少一个列,因为另一个 table 上的项目被添加或删除, link 是外键。

我有两个触发器,但不确定它们是否有效。 所以我想确认一下我是否在寻找正确的树,如果我做错了或没有任何修复改进?

SQL=

CREATE TABLE IF NOT EXISTS Agents(
      Id INTEGER PRIMARY KEY,
      Name TEXT,
      Office_Count INT,
    );

    CREATE TABLE IF NOT EXISTS Branches(
      Id INTEGER PRIMARY KEY,
      Street_Address TEXT,
      City TEXT,
      Postcode TEXT,
      Agents_Id INTEGER,
      FOREIGN KEY(Agents_Id) REFERENCES Branches(Id)
    );

    CREATE TRIGGER Branches_Count_Increment AFTER INSERT ON Branches
    BEGIN
      UPDATE Agents SET
        Office_Count=(MAX(Office_Count)+ 1 FROM Branches Where Agents_Id=Agents.Id) WHERE Id=NEW.Id;
    END;

    CREATE TRIGGER Branches_Count_Decrement AFTER DELETE ON Branches
    BEGIN
      UPDATE Agents SET
        Office_Count=(MAX(Office_Count)- 1 FROM Branches Where Agents_Id=Agents.Id) WHERE Id=NEW.Id;
    END;

你正朝着一棵好树的大致方向吠叫。

但是外部 WHERE 使用了错误的 ID:代理 table 必须使用代理 ID,而 NEW.id 则不是。 并且不需要 MAX,子查询需要 SELECT.

UPDATE Agents
SET Office_Count = Office_Count + 1
WHERE Id = NEW.Agents_Id;