Application developer's guide

声明游标:

1、每一个游标都需要虚拟内存空间,所以每个会话的游标数量上限是根据内存可用量来决定的(虽然在这里没有绝对的强调说你必须声明几个以内)

2、对每一个会话,全系统的限制由初始化参数(名字叫 open_cursors)设定。这个参数存在于参数文件中。如:init.ora。。。

   明确的创建一个游标对于预编译一个程序提供了很多的好处,提高游标的数量也会常常降低解析频率,提高性能。如果你知道在一个给定的时间段需要多少个游标,那你就可以直接打开这些同时应用就好了。

锁的选择使用:

何时使用   行共享锁(row share) 和 行排他锁(row exclusive)

           命令: lock table emp_tab in row share mode; lock table emp_tab in row exclusive mode;

      这两个锁提供了最高级别的并发,你可以在以下情况去用这两个锁;

何时使用 共享锁

           命令:lock table emp_tab in share mode;         

何时使用 行共享排他锁(share row exclusive )

          命令:lock table emp_tab in share row exclusive mode;

正则表达式:

  主要的函数或者状态就是这四个咯:

   regexp_like   用于查找字符列或者一个方案,可以在wherr子句中查询返回行,如: where regexp_like(filst_name,' ste ( v | ph ) en$ ') 这样就把first name 为steven 或者stephen的两个人选出来了。。

  regexp_replace 用于替换一些指定的字符串, 如: regexp_replace(country_name,'(.)' , ' \1 ') 

  regexp_instr 

  regexp_substr 


数据完整性约束: 

   外键约束:  alter table emp_tab add foreign key (deptno) references dept_tab(Deptno);  为emp_tab表 deptno列 添加了外键,参照了dept_tab的Deptno列,这样只有在dept_tab内的Deptno内有值的才能插入或者更新emp_tab表。

 所有的唯一或者主键都会有 一致性索引,你可以手动创建这个索引,而不必让数据库帮你创建。你应该记得给外键加上索引,因为数据库不会自动帮你干这个。

  为一个列加上默认值,有时候会大大提高性能,比如在没有加缺省值的时候是这样写的语句:if sal is not null and sal < 5000;  加上默认值就可以这样写 If sal < 5000;    有些时候,一个列中有很多同样地值,这时你也该考虑给这个列加上这个出现次数最多的值,这样可以减少你插入表的时间,为你带来方便。

 为父子表定义关系

     1、 在外键约束上没有其他约束的情况:  这时,任何数量的字表的行可以参考相同的父表的一个键值,这个模式允许在外键上有空值。这样也就建立了父表和字表一对多的关系,比如department表中每一个部门编号都可以作为参考键,可以对应employee表中得很多员工号(作为外键),同时,还有一些员工不在任何部门中(外键为null)。

    2 、 在外键上有非空约束:有时候子表外键不能为空,必须每个外键都要明确的参照一个父表的值,这个也是一对多得关系,但是没一个员工必须都属于某一个部门,不能出现有员工不在任何部门的情况。

   3 、外键上的唯一性约束(UNIQUE):  只能是一对一的关系,但是可以为空。可以和参照表的键值一一对应。

   4 、外键的 非空唯一约束:也是一对一,不能为空。

推迟一个约束检验:

    你可以用 SET CONSTRAINTS  命令推迟到事物结束时进行正确性(validity)检查,(注意:触发器中不能用SET CONSTRAINTS命令)这个命令会持续到事务的整个运行时期。

    如下情况推迟UNIQUE 和 FOREIGN 的约束检查: a、表是快照 b、一些表有大量数据需要被另一个程序操作,但是返回的时候不是以相同的顺序 c、在外键上更新串联操作。

                CREATE TABLE dept (
                                  deptno NUMBER PRIMARY KEY,
                                  dname VARCHAR2 (30)
                                                );

                CREATE TABLE emp (
                                 empno NUMBER,
                                 ename VARCHAR2 (30),
                                 deptno NUMBER REFERENCES (dept),
                                 CONSTRAINT epk PRIMARY KEY (empno) DEFERRABLE,
                                 CONSTRAINT efk FOREIGN KEY (deptno)
                                 REFERENCES (dept.deptno) DEFERRABLE);
                                 INSERT INTO dept VALUES (10, 'Accounting');
                                 INSERT INTO dept VALUES (20, 'SALES');
                                 INSERT INTO emp VALUES (1, 'Corleone', 10);
                                 INSERT INTO emp VALUES (2, 'Costanza', 20);
                         COMMIT;

                       SET CONSTRAINT efk DEFERRED;
                              UPDATE dept SET deptno = deptno + 10
                              WHERE deptno = 20;
                                   SELECT * from emp ORDER BY deptno;
                                   EMPNO ENAME DEPTNO
                              ----- -------------- -------
                               1 Corleone 10
                               2 Costanza 20
                          UPDATE emp SET deptno = deptno + 10
                           WHERE deptno = 20;
                           SELECT * FROM emp ORDER BY deptno;
                           EMPNO ENAME DEPTNO
                               ----- -------------- -------
                                 1 Corleone 10
                                 2 Costanza 30
                            COMMIT;

可以考虑用一个命令让所有的约束都推迟:SET CONSTRAINTS ALL DEFERED; 

  对于和索引相关的约束:当你建立unique或者 peimary键的时候,oracle会检查是否存在能被用来实施唯一性约束的索引,如果没有的话oracle会自己给你建一个这样的索引。

 与约束有关的俩视图:

    USER_CONSTRAINTS 和  USER_CONS_COLUMNS.

时间: 2024-09-08 21:10:17

Application developer's guide的相关文章

webshpere studio application developer 中 jndi 访问DATASOURCE DB.7.2

application|web|访问 webshpere studio application developer 中 jndi 访问DATASOURCE出现下面的错误,请高手帮忙! 在服务器上我设置了DATasource是jdbc/ds1 Get connection failed.javax.naming.NamingException: The JNDI operation "lookup"on the context "localhost/nodes/localhos

在Rational Application Developer平台上基于JAX-WS开发Web services

引言 Web Services 是一种面向服务的技术,通过标准的 Web 协议提供服务,目的是保证不同平台 的应用服务可以互操作.依据 web services 规范实施的应用之间,无论它们所使用的语言. 平台或内部协 议是什么,都可以相互交换数据,这就是 web services 的好处.本文选择 IBM WebSphere Application Server 作为 web services 的运行环境,并选择 IBM Rational Application Developer(以下简称

在Rational Application Developer中为第三方JavaServer Faces控件定制数据绑

在Rational Application Developer中为第三方JavaServer Faces控件定制数据绑定 引言 IBM Rational Application Developer 7.5.5 版本对标准的 Java Server Faces (JSF)标签库拥有扩展性的内构支持.另外,Rational Application Developer 还支持第三方的标签库.通过使用 Faces Library Definition,您可以定制根据自己的需要,来定制 Rational

使用IBM Rational Application Developer轻松实现JavaServer Faces Web程序的

使用IBM Rational Application Developer轻松实现JavaServer Faces Web程序的全球化 在 RAD V7 或者后续版本中使用 JavaServer Widgets Library(JWL) 了解如何使用 IBM Rational Application Developer 来实现 JavaServer Faces Web 程序的全球化.本文描述了开发全球市场所面临的挑战,并介绍了怎样使用 JavaServer Faces Widget Library

如何利用Rational Application Developer将现有的静态Web站点转变为动态Web站

如何利用Rational Application Developer将现有的静态Web站点转变为动态Web站点 本文将帮助技术背景的读者了解如何利用 IBM Rational Application Developer 将现 有的静态 Web 站点转变为动态 Web 站点.用户将添加一个邮件 servlet.Java2 Platform, Enterprise Edition (J2EE) 安全性,并利用 Web 站点设计工具的页面模板来为整个 Web 站点 创建一致的外观. 与静态 Web 站

IBM Rational Application Developer代码覆盖工具入门简介

为您的 Java 程序生成代码覆盖统计数据 简介:代码覆盖率工具是软件测试过程中使用到的一个重要的工具,因为它提供了一个关于程序被测 试用例覆盖程度的观点.本文向您展示了怎样使用 IBM Rational Application Developer 中提供的代码覆盖工具,来为 Java 程序生成测试的覆盖率结果,并提供了关于怎样分析结果以 改进测试的信息. 什么是 Rational Code Coverage 特性? 代码覆盖率是软件测试的一个 重要方面,对于一个构件的总体系统测试来说可能是一个

使用Rational Application Developer V7.5版本来进行资源注入

克服 Java Persistence API 结构对存储过程中 OUT 参数不能支持的难题 简介:Java 平台企业版(Java Platform, Enterprise Edition,JEE) 简化了完整企业程序 的部署.通过注释使用资源注入,可以减少标准代码,这有助于编写可维护的代码.您的公司可能拥有大 量已存在的复杂存储过程.您可以继续开发使用存储过程的程序,并利用 Java 平台.IBM Rational Application Developer 提供了一个丰厚的开发环境,并紧密地

IBM Rational Application Developer V7.5 Portal Toolkit,第5部分

对门户和portlet程序的事件和公共赋值参数的工具支持 Java portlet 规格 2.0 中引入的新特性,基于 JSR 286,支持 portlets 之间的协作.事件和公共赋值变量是 portlets 相互之间可以交流的两个机理.在对一些关键概念做简短介绍之后,本文向您介绍如何使用 IBM Rational Application Developer V7.5 中的 Portal Toolkit,来创建一个 JSR 286 基本 portlet 的范例.在这个过程中,它解释了 Port

IBM Rational Application Developer V7.5 Portal Toolkit,第4部分

静态页面聚合 简介:进行静态页面聚合,您可以从 IBM WebSphere Portal V6.1 项目的静态 HTML 布 局或者模板中,创建门户页面.本文一步步地指导您,使用 IBM Rational Application Developer V7.5,来创建.设计.编辑和聚合这样的静态布局,目标确定为门户服务器运行时环境.按照 本文中介绍的步骤,您不需要懂太多基础的门户 API 知识. 系统需求 作者假设您的电脑 上安装有 IBM Rational Application Develop