Oracle管理约束(一)Oracle约束基本概念

数据的完整性用于确保数据库数据遵循特定的商业规则。

在Oracle 数据库中,可以使用约束、触发器和应用代码(过程、函数)3种方法实现数据的完整性。

今天我们主要讨论如何使用约束去保证数据的完整性和一致性。

1、约束的功能

通过一些强制性商业规则,保证数据的完整性、一致性

2、约束的类别

1) not null

2) check

3) unique

4) primary key (not null + unique)

5) foreign key (reference)

3、约束的状态

1)ENABLE VALIDATE(默认状态)

设定为此状态时,约束会立刻生效,并要求新、旧数据必须同时满足约束规则

11:43:19 SQL> alter table emp1

11:44:19   2   enable validate constraint  pk_emp1;

alter table emp1

*

ERROR at line 1:

ORA-02437: cannot validate (SCOTT.PK_EMP1) - primary key violated

-----新旧记录都必须符合约束

2)ENABLE NOVALIDATE

当设定为此状态时,约束会立刻生效,已存在的数据可以不满足约束规则,但新数据必须满足约束规则。

可以直接用于not null ,check ,foreign key 约束,对于primary key ,unique 的约束不能直接使用,因为对于primary key 和 unique  会生成唯一性索引,不能使用这种状态;要想使用这种状态,必须使用非唯一性索引。

11:37:46 SQL> create table emp1 as select * from emp;

Table created.

11:37:51 SQL> select * from emp1;

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO

---------- ---------- --------- ---------- --------- ---------- ---------- ----------

7369 SMITH      CLERK           7902 17-DEC-80        800                    20

7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30

7566 JONES      MANAGER         7839 02-APR-81       2975                    20

7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30

7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30

7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10

7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20

7839 KING       PRESIDENT            17-NOV-81       5000                    10

7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30

7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20

7900 JAMES      CLERK           7698 03-DEC-81        950                    30

7902 FORD       ANALYST         7566 03-DEC-81       3000                    20

7934 MILLER     CLERK           7782 23-JAN-82       1300                    10

11:38:04 SQL> update emp1 set empno=7788 where ename='KING';

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

1 row updated.

11:39:00 SQL> select * from emp1 WHERE EMPNO=7788;

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO

---------- ---------- --------- ---------- --------- ---------- ---------- ----------

7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20

7788 KING       PRESIDENT            17-NOV-81       5000                    10

11:39:10 SQL>

——添加primary key ,到enable novalidate

11:39:10 SQL> alter table emp1 add constraint

11:39:42   2    pk_emp1 primary key (empno) enable novalidate;

pk_emp1 primary key (empno) enable novalidate

*

ERROR at line 2:

ORA-02437: cannot validate (SCOTT.PK_EMP1) - primary key violated

——原因:在建立primary key 它需要建立unique index

——在empno 上建立索引(非唯一性索引)

11:40:06 SQL> create index emp1_empno_ind on emp1(empno) tablespace indexes;

Index created.

11:42:17 SQL> alter table emp1 add constraint

11:42:20   2    pk_emp1 primary key (empno) using index enable novalidate ;

Table altered.

11:42:29 SQL>

——新的记录必须符合约束,旧的不检查

11:42:58 SQL> update emp1 set empno=7788 where ename='FORD';

update emp1 set empno=7788 where ename='FORD'

*

ERROR at line 1:

ORA-00001: unique constraint (SCOTT.PK_EMP1) violated

3)DISABLE VALIDATE

将约束设定为此状态时,不允许在表上执行任何的DML操作。对于主键和唯一性约束来讲,会删除相应的唯一索引,但约束规则任然有效。

4)DISABLE  NOVALIDATE

将约束设定为此状态时,数据可以不满足约束规则。对于主键和唯一性约束来讲,会删除相应的唯一索引。

时间: 2024-11-02 01:57:53

Oracle管理约束(一)Oracle约束基本概念的相关文章

提升用户体验和交付应用程序 Oracle管理云获得多行业用户认可

2月23日,甲骨文宣布Oracle管理云(Oracle Management Cloud)业务实现大幅增长,在其上市后一年内即在全球赢得近950家新客户和合作伙伴,包括FORS.IDEA Cellular和Safexpress,它们均选择Oracle管理云来提高IT资源利用率,提升开发运维生产力,确保关键应用程序持续保持运行. Oracle管理云是Oracle云平台(Oracle Cloud Platform)的一部分,集成了一整套的新一代监测.管理和分析云服务,利用机器学习和大数据技术处理客户

Oracle管理约束(四)Oracle修正约束数据

使用 ENABLE VALIDATE 选项激活约束时,如果已存在数据不满足约束规则,则会提示错误信息,并且激活约束会失败.此时必须对已存在 数据进行修正,已确保这些数据全部满嘴约束规则.具体方法如下: (1)建立EXCEPTIONS 表 05:02:44 SQL> @$ORACLE_HOME/rdbms/admin/utlexcpt; Table created. 05:05:33 SQL> alter table t1 05:06:26   2   add constraint pk_id

Oracle 11g系列—6—Oracle中表的约束

完整性约束指的是数据库中数据的正确性和相容性.主要指下面的: primary key 主键 foreign key 外键 unique 唯一 not null 非空 check 检查约束 在Oracle中,使用constraint(英文的意思就是约束)关键字 为约束命名.如果用户没有命名,那么系统会自动会用户创建 的约束命名. OK,那我们接着就详细讲讲这些. 一.Not null 约束 从字面很好理解,就是非空约束,表 示某些列的值不可缺少的,在插入数据的时候,如果没有为它赋值,那么会提示错误

Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

ORACLE集群概念和原理(二) Oracle集群概念和原理 Oracle的三种高可用集群方案 1 RAC(Real Application Clusters)                         多个Oracle服务器组成一个共享的Cache,而这些Oracle服务器共享一个基于网络的存储.这个系统可以容忍单机/或是多机失败.不过系统内部的多个节点需要高速网络互连,基本上也就是要全部东西放在在一个机房内,或者说一个数据中心内.如果机房出故障,比如网络不通,那就坏了.所以仅仅用RAC

利用Oracle管理服务器将数据导入导出

在Oracle 9i中可以方便的把数据导出为文件,或者从文件导入.通过Oracle的管理服务器(Oracle Management Server,OMS)可以方便的实现,整个操作过程中有很多地方需要解释说明,但是完整的指导资料不多.各大论坛上很多所谓的高手,对该主题的回答往往是,高手是不用OMS的,用exp/impl吧.如果你执意追问,他多半会告诉你,其实我也不知道.如果有一份文档可以傻瓜式的指导他们如何来做,大多数人会欣喜若狂且若无其事的下载保存,回去慢慢研究. 使用EntERPrise Ma

Oracle管理安全和资源(三)Oracle资源管理器简介

Oracle资源管理器(Oracle Database Resource Manager,以下简称DBRM)管理数据库资源,为不同的会话分配不同的数据库资源.DBRM管理的资源主要包括CPU时间.下面分以下几个章节介绍: Oracle DBRM帮你处理哪些问题 Oracle DBRM是怎样处理这些问题的 Oracle DBRM包含的内容 Oracle DBRM资源分配方法 Oracle DBRM的权限管理 1.Oracle DBRM帮你处理哪些问题  当数据库服务器资源由操作系统来分配时,你可能

Oracle管理安全和资源(一)Oracle策略文件

Profile 是口令限制.资源限制的命名集合.建立Oracle数据库时,Oracle会自动建立Default Profile,然后分配各用户,如果没有指定,用户会启用default profile. 1.查看口令文件 09:07:15 SQL> select username ,profile from dba_users; USERNAME                       PROFILE ------------------------------ ---------------

Oracle管理用户(一) Oracle建立用户

1.概念 (1)用户 User:用户(账户)是定义在数据库里的一个名称. (2)特权用户:特权用户是指具有特殊权限(sysdba 或 sysoper)的数据库用户. SYSDBA 自动具备了DBA角色的所有权限,而sysoper则不具备DBA角色的权限. (3)方案(Schema):方案是用户所拥有数据库对象的集合. 2.用户认证方式 (1)OS认证:是指使用OS检查用户.口令和用户身份的方式. (2)database认证 3.建立用户 (1)建立数据库认证的用户 SQL> create use

oracle-急求大神解答,怎样在ORACLE 管理页面 添加一个JOB

问题描述 急求大神解答,怎样在ORACLE 管理页面 添加一个JOB 能不能从ORACLE管理页面添加一个JOB控制某一个存储过程的执行, 解决方案 不是直接在数据库JOB中新建,而是通过登录管理页面的JOB管理新建,怎么写?