• oracle 触发器


    1.创建语法

    create [or replace] tigger 触发器名 触发时间 触发事件
    
    on 表名
    [for each row]
    begin
     pl/sql语句
    end


    触发器名:触发器对象的名称。由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。
    触发时间:指明触发器何时执行,该值可取:
    before:表示在数据库动作之前触发器执行;
    after:表示在数据库动作之后触发器执行。
    触发事件:指明哪些数据库动作会触发此触发器:
    insert:数据库插入会触发此触发器;
    update:数据库修改会触发此触发器;
    delete:数据库删除会触发此触发器。
    表 名:数据库触发器所在的表。
    for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

    2.举个栗子

    create or replace trigger auth_secure before insert or update or DELETE
    on tb_emp
    begin
      IF(to_char(sysdate,'DY')='星期日') THEN
        RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表tb_emp');
      END IF;
    END;
    /

    3.语法备注

    CREATE OR REPLACE TRIGGER TEST_TRIGGER
     AFTER DELETE OR INSERT OR UPDATE ON TEST
    DECLARE         ------声明变量   
     V_TYPE TEST_LOG.L_TYPE%TYPE;
     IF INSERTING THEN
      V_TYPE := 'INSERT';           ----------  := 是赋值运算符

     3.   ACL权限设置    sql命令

       BEGIN
       DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
        acl          => 'email_server_permissions.xml', 
        description  => 'Enables network permissions for the e-mail server',
        principal    => 'DBA', --此为将来要进行操作的用户
        is_grant     => TRUE, 
        privilege    => 'connect');
        END;
        
        
        
        BEGIN
          --2. 将此 ACL 与邮件服务器相关联,
    
          DBMS_NETWORK_ACL_ADMIN.assign_acl (
          acl         => 'email_server_permissions.xml',
          host        => '172.10.0.56', --SMTP服务器地址
          lower_port  => 25,
          upper_port  => 25);
        COMMIT;
        END;
        
        BEGIN
            --3.创建访问控制列表(ACL)network_services,
    
       DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
        acl          => 'network_services.xml', 
        description  => 'Enables network permissions for the e-mail server',
        principal    => 'DBA', --此为将来要进行操作的用户
        is_grant     => TRUE, 
        privilege    => 'connect');
          END;
        
        BEGIN
            --4. 将此 ACL 与邮件服务器相关联,
    
      DBMS_NETWORK_ACL_ADMIN.assign_acl (
          acl         => 'network_services.xml',
          host        => '172.10.0.56', --SMTP服务器地址
          lower_port  => NULL,
          upper_port  => NULL);
        COMMIT;
          END;
        

    4.触发器访问网络

        p_url:='http://172.10.0.56/fd/app/ChangeResidentPhone';
        http_req:=utl_http.begin_request(p_url,'GET');        
        http_resp := utl_http.get_response(http_req, TRUE);
        loop
            utl_http.read_raw(http_resp, l_raw,1024);
            l_r:=l_r||utl_raw.cast_to_varchar2(l_raw);
        end loop;
        utl_http.end_response(http_resp);
  • 相关阅读:
    客户端与服务器持续同步解析(轮询,comet,WebSocket)
    JQuery批量上传插件Uploadify使用详解及参数说明
    win7下安装配置tomcat,java运行环境
    我在Facebook工作的十大经验分享
    jquery submit方法在IE6下的诡异bug
    小练一下canvas版简单时钟与css3版漂亮时钟
    全面解析jquery实现回车键提交表单
    IE8页面加载速度测试
    微软发布Visual Studio 2008 SP1
    开发人员为什么要支持非IE浏览器的四个故事
  • 原文地址:https://www.cnblogs.com/leolzi/p/9049467.html
Copyright © 2020-2023  润新知