存储过程和触发器-语句触发器

/*
语句触发器与一些特定的语句相关,例如INSERT,UPDATE,DELETE语句等等,可以使用CREATE TRIGGER语句创建触发器,格式如下:
CREATE[OR REPLACE] TRIGGER 
   
   <触发器名>
    
    
[BEFORE|AFTER] 
    
    <触发事件>
     
      ON 
     
     <表名>

      
      
       
       
*/
      
      
     
     
    
    
   
   

--在SqlPlus中创建两张用于测试的表
drop table testTrigger;
drop table testlog;
drop trigger TRI_TESTTRIGER;
--创建表
create table testTrigger(
		id number(5),
		name number(3)
	);
--创建日志表
create table testlog(
		action varchar2(50),
		act_time date
	);
--创建一个触发器,当用户产生INSERTING,UPDATING,DELETING数据的时候,都会产生相应的日志
CREATE OR REPLACE TRIGGER TRI_TESTTRIGER
AFTER INSERT OR UPDATE OR DELETE
ON TESTTRIGGER
DECLARE
	V_ACTION VARCHAR2(10);
BEGIN
	IF INSERTING THEN V_ACTION := 'INSERT';
	ELSIF UPDATING THEN V_ACTION := 'UPDATE';
	ELSIF DELETING THEN V_ACTION := 'DELETE';
	ELSE V_ACTION :='OTHER';
	END IF;
	INSERT INTO TESTLOG VALUES(V_ACTION,SYSDATE);
END;
/

--在testTrigger表中执行insert、update、delete语句

SQL> insert into testTrigger values(1,1);

已创建 1 行。

SQL> update testtrigger set id=2;

已更新 1 行。

SQL> delete testtrigger where id=2;

已删除 1 行。


--查询testlog表中是否有记录

SQL> select * from testlog;

ACTION                                             ACT_TIME
-------------------------------------------------- --------------
INSERT                                             17-4月 -11
UPDATE                                             17-4月 -11
DELETE                                             17-4月 -11

--当操作回退的时候,触发器所产生的TESTLOG也被回退掉了

SQL> rollback;

回退已完成。

SQL> select * from testlog;

未选定行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值