更新触发器SQLite中的单个行
表rental具有值(ID、odo_out、日期), 表车辆具有值(ID、odo、car), 两者都有更多的列,但与此无关 我已尝试创建触发器:更新触发器SQLite中的单个行,sqlite,triggers,sql-update,Sqlite,Triggers,Sql Update,表rental具有值(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 Veh
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的空值,并用Vehicle.odo中对应ID的值替换它。这确实有效,但它会更新表中的每一行,而我希望它只用空值更新行,即插入新行。一个ID可以在租赁表中重复多次。如何执行此操作?您必须设置条件,以便仅更新新行。
这里需要关键字
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;