(SQL/PLSQL) 在触发期间显示更新的行
Posted
技术标签:
【中文标题】(SQL/PLSQL) 在触发期间显示更新的行【英文标题】:(SQL/PLSQL) Display updated rows during trigger 【发布时间】: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;
有没有办法在触发器运行后显示更新的行?
【问题讨论】:
您可以,但您不应该这样做,因为触发器可以从执行更新的任何地方执行,并且虽然您的应用程序可能希望返回结果集,但其他调用者可能不会。 有没有其他方法可以不用触发器? 如果您的应用需要显示列表,请在更新后进行选择。据推测,您知道或可以推导出已更新的数据集。您还可以将更新作为存储过程来更新行程和驱动程序,然后可以查询您喜欢的任何内容。触发器的问题是它们往往相对隐藏,除非你去寻找它们。 【参考方案1】:如果您只是在查找更新/插入的行数,您可以使用以下命令通过 dbms 输出显示这些行数:
dbms_output.put_line(sql%rowcount || ' rows updated/inserted.');
【讨论】:
以上是关于(SQL/PLSQL) 在触发期间显示更新的行的主要内容,如果未能解决你的问题,请参考以下文章