zoukankan      html  css  js  c++  java
  • oracle 触发器

    Oracle触发器语法:

    Create or  replacetrigger 触发器名   触发时间  触发事件

     On 表名

    for each row //  对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

    Begin

     Pl/sql 语句

    End

    对If  then     end  if 的理解:

      

    语法格式:
    IF    条件1 THEN
    语句序列1;
    ElSIF 条件2 THEN
    语句序列2;
    [
    ELSIF 条件n THEN
      语句序列 n;
    ]
    [
    ELSE
    语句序列 n+1
    ……
    ]
    END IF;
    
    例:取出7369的薪水,如果薪水<1200,则输出'low',如果<2000则输出'middle',否则'high' 
    --注意elsif的写法,then后面没有分号
    --注意最后一个else后面没有then
    --注意end if后面有一个分号
    
    declare
       v_sal   emp.sal%type;
    begin
       select sal into v_sal from emp where empno = 7369;
       if v_sal < 1200    then
          dbms_output.put_line ('salgrade is low');
       elsif v_sal < 2000 then
          dbms_output.put_line ('salgrade is middle');
       else
          dbms_output.put_line ('salgrade is high');
       end if;
    end;
     

    下面的触发器在更新表cyq_emp之前触发,目的是不允许在周末修改表:

    create or replace trigger auth_secure before insert or update or DELETE

    on cyq_emp

    begin

      IF(to_char(sysdate,'DY')='星期日') THEN

        RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表cyq_emp');

      END IF;

    END;

    使用触发器实现序号自增

    创建一个测试表:

    create table cyq_user(

      id number(11) primary key,

      username varchar(50),

      password varchar(50)

    );

    创建一个序列:

    复制代码 代码如下:

    create sequence my_seq increment by 1 start with 1 nomaxvalue nocycle cache 20;

    创建一个触发器:

    CREATE OR REPLACE TRIGGER MY_TGR

     BEFORE INSERT ON CYQ_USER

     FOR EACH ROW--对表的每一行触发器执行一次

    DECLARE

     NEXT_ID NUMBER;

    BEGIN

     SELECT MY_SEQ.NEXTVAL INTO NEXT_ID FROM DUAL;

     :NEW.ID := NEXT_ID; --:NEW表示新插入的那条记录

    END;

    向表插入数据:

    insert into cyq_user(username,password) values('admin','admin');

    insert into cyq_user(username,password) values('fgz','fgz');

    insert into cyq_user(username,password) values('test','test');

    COMMIT;

  • 相关阅读:
    jQuery初学:find()方法及children方法的区别分析
    百万级访问网站前期的技术准备
    TCP/IP协议三次握手与四次握手流程解析
    TCP/IP详解学习笔记
    Dubbo框架入门介绍
    如何提高Web服务端并发效率的异步编程技术
    杂 -- 有关程序员
    关于高性能的那点事
    大型网站的灵魂- 性能
    分布式java应用
  • 原文地址:https://www.cnblogs.com/chaiyingqi/p/8460868.html
Copyright © 2011-2022 走看看