【问题标题】:Android SQLite trigger troublesAndroid SQLite 触发问题
【发布时间】:2012-02-20 18:15:17
【问题描述】:

我对 SQL/SQLite 比较陌生,我正在尝试在我的数据库中设置触发器。基本上,有一个表包含人的姓名和 ID,而另一个表包含这些人的条目。这是我的表的架构:

CREATE TABLE people(_id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING NOT NULL,
 amount_people INTEGER);


 CREATE TABLE entries (_id INTEGER PRIMARY KEY AUTOINCREMENT, 
    user INTEGER NOT NULL, date STRING NOT NULL, 
      title STRING NOT NULL, amount_entry INTEGER NOT NULL,
    notes STRING, FOREIGN KEY (user) REFERENCES people (_id) ON DELETE CASCADE);

我想构建一个触发器,每次在条目表中为该用户创建一个新条目时,该触发器都会更新该用户在该用户表中的余额。这似乎应该很容易,但我在过去的 2 个小时里试图实现这一目标,但没有成功。

这是我错误的触发器版本:

CREATE TRIGGER update_total_balance AFTER INSERT ON entries 
BEGIN
UPDATE people SET amount_people = amount_people + (amount_entry FROM entries) 
   WHERE _id = (user FROM entries);
END;

【问题讨论】:

    标签: android sql database sqlite triggers


    【解决方案1】:

    未经测试...

    CREATE TRIGGER update_total_balance AFTER INSERT ON entries 
    BEGIN
    UPDATE people SET amount_people = amount_people + new.amount_entry 
       WHERE _id = new.user;
    END;
    

    【讨论】:

    • 啊,这很有效,这正是我想要实现的!在我对触发器的一些尝试中,我在 amount_people 前面加上 old 和 new,我认为这就是我出错的地方。感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多