Oracle BEFORE Trigger

一、Oracle BEFORE Trigger 语法

此语句指定 Oracle 将在执行 INSERT/UPDATE 或 DELETE 操作之前触发此触发器。

语法:

CREATE [ OR REPLACE ] TRIGGER trigger_name  
BEFORE INSERT or UPDATE or 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 INSERT 或 UPDATE 或 DELETE:它指定触发器将在执行 INSERT 或 UPDATE 或 DELETE 操作之前触发。
  • table_name:它指定正在对其执行触发操作的表的名称。

限制

  • 无法在视图上创建 BEFORE 触发器。
  • 您无法更新 OLD 值。
  • 您只能更新新值。

二、Oracle BEFORE Trigger 示例

考虑一下,您有一个包含以下参数的“suppliers”表。

CREATE TABLE  "SUPPLIERS"   
   (    "SUPPLIER_ID" NUMBER,   
    "SUPPLIER_NAME" VARCHAR2(4000),   
    "SUPPLIER_ADDRESS" VARCHAR2(4000)  
   )  
/  

您可以使用以下CREATE TRIGGER 查询来创建 BEFORE INSERT 或 UPDATE 或 DELETE 触发器:

CREATE OR REPLACE TRIGGER  "SUPPLIERS_T1"   
BEFORE  
insert or update or delete on "SUPPLIERS"  
for each row  
begin  
when the person performs insert/update/delete operations into the table.  
end;  
/  
ALTER TRIGGER  "SUPPLIERS_T1" ENABLE  
/  

这里的触发器名称是“SUPPLIERS_T1”,它在对表“suppliers”执行插入、更新或删除操作之前被触发。

热门文章

优秀文章