مارا دنبال کنید : 

تصویر هدر ویونا
توضیحات
BEFOR DELETE Trigger به معنی این است که قبل از اجرای یک دستور delete، یک تریگر فعال (fire) شود.
دستور
دستور Befor delete triger به صورت زیر نوشته می‌شود:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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: گزینه‌ای اختیاری است، اگر فعال شود به این معنی است که می‌توان دوباره تریگری با این نام ساخت بدون این‌که نیاز باشد این تریگر پاک شود. table_name: نام جدولی که تریگر بر روی آن ساخته شده است. نکته: این دستور را می‌توان برای insert و update به صورت befor insert و befor delete نوشت.    
مثال
مثالی از دستور ساخت Befor Delete triger را مشاهده می‌کنیم:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
CREATE TABLE orders
( order_id number(5),
  quantity number(4),
  cost_per_item number(6,2),
  total_cost number(8,2)
);
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;