oracle数据库drop触发器,Oracle之前删除触发器

本Oracle教程解释了如何在Oracle中创建Before Delete触发器的语法和示例。

Before Delete触发器表示Oracle将在执行删除操作之前触发此触发器。

语法

在Oracle / PLSQL中创建Before Delete触发器的语法是:

CREATE [ OR REPLACE ] TRIGGER trigger_name

BEFORE DELETE

ON table_name

[ FOR EACH ROW ]

DECLARE

-- variable declarations

BEGIN

-- trigger code

EXCEPTION

WHEN ...

-- exception handling

END;

参数:

OR REPLACE - 可选的。 如果指定,它允许您重新创建已存在的触发器,以便可以在不发出DROP TRIGGER语句的情况下更改触发器定义。

trigger_name - 要创建的触发器的名称。

Before Delete - 它表示触发器将在执行Delete操作之前触发。

table_name - 创建触发器的表的名称。

限制

无法在视图上创建Before触发器。

可以更新:NEW值。

无法更新:OLD值。

示例

我们来看看如何使用CREATE TRIGGER语句创建Before Delete触发器的示例。

需要先创建下面一个表:

CREATE TABLE orders

( order_id number(5),

quantity number(4),

cost_per_item number(6,2),

total_cost number(8,2)

);

然后使用CREATE TRIGGER语句创建一个Before Delete触发器,如下所示:

提示:使用SQLPlus时,需要在触发后在新行上输入斜杠。 否则,脚本将不会执行。

CREATE OR REPLACE TRIGGER orders_before_delete

BEFORE DELETE

ON orders

FOR EACH ROW

DECLARE

v_username varchar2(10);

BEGIN

-- Find username of person performing the DELETE on the table

SELECT user INTO v_username

FROM dual;

-- Insert record into audit table

INSERT INTO orders_audit

( order_id,

quantity,

cost_per_item,

total_cost,

delete_date,

deleted_by )

VALUES

( :old.order_id,

:old.quantity,

:old.cost_per_item,

:old.total_cost,

sysdate,

v_username );

END;

/

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部