【问题标题】:Updating a singular row in a trigger SQLite更新触发器 SQLite 中的单个行
【发布时间】:2020-10-15 02:50:51
【问题描述】:

表出租有值(ID、odo_out、日期), 表车辆具有值(ID,odo,car), 都有更多的列,但与此无关。

我已尝试创建触发器:

CREATE TRIGGER odo_update AFTER INSERT ON rental
BEGIN
UPDATE rental SET odo_out = (SELECT Vehicle.odo FROM Vehicle WHERE rental.ID = Vehicle.ID)
WHERE EXISTS (SELECT * FROM Vehicle WHERE Vehicle.ID = rental.ID);
END;

它应该检测到rental.odo_out 的NULL 并将其替换为Vehicle.odo 中对应ID 的值。这确实有效,但它会更新表中的每一行,而我希望它只更新带有 NULL 的行,即插入的新行。一个 ID 可以在出租表中重复多次。我该怎么做?

【问题讨论】:

    标签: sqlite triggers sql-update


    【解决方案1】:

    您必须设置条件以便仅更新新行。
    这是您需要关键字NEW 来引用新行的列的地方:

    CREATE TRIGGER odo_update AFTER INSERT ON rental
    WHEN NEW.odo_out IS NULL
    BEGIN
      UPDATE rental 
      SET odo_out = (SELECT odo FROM Vehicle WHERE ID = NEW.ID)
      WHERE ID = NEW.ID;
    END;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多