【发布时间】:2018-08-31 01:20:04
【问题描述】:
create or replace trigger add_trips
AFTER UPDATE OR INSERT OR DELETE ON TRIP
DECLARE
trip_num DRIVER.TRIPS%TYPE;
BEGIN
UPDATE DRIVER SET trips = (SELECT COUNT(L#) AS NUMOFTRIPS FROM TRIP WHERE
DRIVER.L# = TRIP.L#)
WHERE EXISTS (SELECT TRIP.L# FROM TRIP WHERE TRIP.L# = DRIVER.L#);
END;
有没有办法在触发器运行后显示更新的行?
【问题讨论】:
-
您可以,但您不应该这样做,因为触发器可以从执行更新的任何地方执行,并且虽然您的应用程序可能希望返回结果集,但其他调用者可能不会。
-
有没有其他方法可以不用触发器?
-
如果您的应用需要显示列表,请在更新后进行选择。据推测,您知道或可以推导出已更新的数据集。您还可以将更新作为存储过程来更新行程和驱动程序,然后可以查询您喜欢的任何内容。触发器的问题是它们往往相对隐藏,除非你去寻找它们。
标签: sql database oracle plsql database-trigger