如何创建在 PL/SQL 中更新后触发的触发器

Posted

技术标签:

【中文标题】如何创建在 PL/SQL 中更新后触发的触发器【英文标题】:How to create a trigger that fires after an update in PL/SQL 【发布时间】:2013-12-11 06:19:53 【问题描述】:

我想创建一个触发器,当 Fin_Movie 表中的 Movie_Qty 更新为 0 时,消息“(电影标题)不再可用”

这是我目前所拥有的:

CREATE TRIGGER movie_trg
AFTER UPDATE OF movie_qty
ON fin_movie
FOR EACH ROW 
WHEN (new.movie_qty = 0)
BEGIN 
DBMS_OUTPUT.PUT_LINE(' will no longer be available');
END;

它可以编译,但我不知道如何在输出中显示之前的电影标题。

谢谢

【问题讨论】:

在 Oracle 数据库中,您应该是 on serveroutput 并带有以下语句 - set serveroutput on。然后只有来自Dbms_output.put_line 的消息将显示在显示屏上。 当前 Dbms_output.put_line 显示“将不再可用”,我想将 movie_title 添加到该语句中。所以换句话说,我想显示已经更新为0的Movie_Qty的Movie_Title,并且是'将不再可用' 简单地你可以写New.movie_name附加你的显示信息..就像Dbms_output.put_line('will no longer be available '||New.movie_name);我认为这应该解决你的问题.. 【参考方案1】:
CREATE OR REPLACE   
TRIGGER SAL_TRG1 AFTER UPDATE ON EMPC 
FOR EACH ROW 
begin
     if (:new.salary =0) then
          raise_application_error (-20110,'invalid length');
     end if;
end;

【讨论】:

以上是关于如何创建在 PL/SQL 中更新后触发的触发器的主要内容,如果未能解决你的问题,请参考以下文章

语句触发器 PL/SQL

如何在 Oracle PL/SQL 上创建可以捕获 DUP_VAL_ON_INDEX 的前触发器或后触发器

在 Oracle PL/SQL 中创建触发器时如何解决“编译错误成功”错误?

pl/sql 触发器完整性约束问题

使用 PL/SQL 在触发器中中止插入/更新操作

PL/SQL ORACLE:删除时触发更新