zoukankan      html  css  js  c++  java
  • oracle:存储过程和触发器

    存储过程(stored procedure) :可以看作带名字的pl/sql程序块;通过名字调用执行;可以带参数或不带参数。

    触发器(trigger):通过事件触发执行,可看成特殊类型的存储过程。

    下图建立了一个acc存储过程,显示account账户的id 及其对应的money值:

    存储过程执行:1.exec p;        2. begin  

                                              p;

                    end;

                    /

     下面存储过程,给收入在[1000,2000)区间的用户增加1块收入,给给收入在[2000,3000)区间的用户增加2块收入.

    执行后显示:

     触发器:

    两个示例:1.创建操作日志               2.修改数据库的外键关联

    1.创建操作日志:

     创建触发器:before /after   insert or deleteor update on account(可同时多个触发事件用or隔开即可)

    执行操作,看是否自动计入acclog表

     2.使用触发器修改被参考项的外键关联(有副作用,尽量少用)

    作用:可以让已被参考的外键项实现子项和父项的关联更改;

    侧效:子项和父项信息都可能会关联其它信息,这时是否、能否需要进行关联改变或其它操作要考虑,小心蝴蝶效应。

    dept.id 是 emp表中的主外键;

    emp表  

    dept表:

    这时:

    emp中的depno值可以改变(只要在dept.id中有对应值,有父项关键字)

    而dept中的已被参考项不可更改:

     可以使用触发器  :NEW            :OLD          实现关联修改:

    EMP中实现了关联更改

    仅提供一种功能描述,注意具体使用场景。小心使用!注意侧效!

    注意commit提交,不然不同终端的显示结果不同:

    右图中cmd环境,不提交退出,其实这条update语句会回滚,不会有任何作用。

    重新登入查询,dept没有数据更新。

  • 相关阅读:
    git查看工作状态和历史提交
    PowerDesigner工具栏palette的方法
    WCF证书制作
    ASP.NET.4 高级程序第4版 第3章Web窗体
    tbar居右显示的两种方法
    测试
    转载extj grid
    正值
    网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍[转]
    SQL Server 启用“IP+端口”连接
  • 原文地址:https://www.cnblogs.com/zx3707/p/5737549.html
Copyright © 2011-2022 走看看