【问题标题】:SQLite Trigger is updating every row, instead of selected rowsSQLite 触发器正在更新每一行,而不是选定的行
【发布时间】:2021-12-02 11:32:05
【问题描述】:

我有TableAcol1 ,col2Col1Co12 目前都是NULL

我正在尝试创建 TRIGGER 以在 Col1 更改为非 NULL 时更新 Col2

这是我到目前为止的触发器,但是在UPDATE 上,它正在将TableA.Col2 中的每一行更新为11 ...不仅仅是已更改的行:

CREATE TRIGGER trigger1 
AFTER UPDATE
ON TableA
WHEN NEW.date_back IS NOT NULL
AND OLD.date_back IS NULL  
BEGIN 
    UPDATE TableA 
    SET Col2 = 11;
END; 

【问题讨论】:

  • 您的更新缺少 where 子句。触发器不会为您提供。

标签: sql sqlite


【解决方案1】:

您的更新缺少 where 子句。没有隐含的 where 子句仅仅因为查询在触发器内。

假设您的表有一个 id 列...

CREATE TRIGGER trigger1 AFTER UPDATE ON TableA
WHEN NEW.date_back IS NOT NULL
 AND OLD.date_back IS NULL  
BEGIN 
  UPDATE TableA SET Col2 = 11 where id = new.id
END; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 2021-10-13
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多