【问题标题】:(SQL/PLSQL) Display updated rows during trigger(SQL/PLSQL) 在触发期间显示更新的行
【发布时间】: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


【解决方案1】:

如果您只是在查找更新/插入的行数,您可以使用以下命令通过 dbms 输出显示这些行数:

 dbms_output.put_line(sql%rowcount || ' rows updated/inserted.');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多