Maintaining Data Integrity
13
Copyright © Oracle Corporation, 2001. All rights reserved.
Objectives
After completing this lesson, you should be able to do the following:
13-2
Copyright © Oracle Corporation, 2001. All rights reserved.
Data Integrity
Application�code
Table
Data
Integrity�constraint
Database�trigger
13-3
Copyright © Oracle Corporation, 2001. All rights reserved.
13-4
Copyright © Oracle Corporation, 2001. All rights reserved.
Types of Constraints
Constraint�
NOT NULL��
UNIQUE����PRIMARY KEY���FOREIGN KEY��
CHECK��
Description�
Specifies that a column cannot contain null values�
Designates a column or combination of columns as unique�
Designates a column or combination of columns as the table’s primary key��Designates a column or combination of columns as the foreign key in a referential integrity constraint��Specifies a condition that each row of the table must satisfy�
13-5
Copyright © Oracle Corporation, 2001. All rights reserved.
Constraint States
ENABLE�NOVALIDATE
Existing data
New data
DISABLE�NOVALIDATE
DISABLE�VALIDATE
=
=
ENABLE�VALIDATE
13-6
Copyright © Oracle Corporation, 2001. All rights reserved.
13-7
Copyright © Oracle Corporation, 2001. All rights reserved.
Constraint Checking
DML statement
Check nondeferred constraints
COMMIT
Check deferred constraints
13-8
Copyright © Oracle Corporation, 2001. All rights reserved.
Defining Constraints �Immediate or Deferred
13-9
Copyright © Oracle Corporation, 2001. All rights reserved.
Primary and Unique Key Enforcement
Is an index �available �for use?
Yes
No
No
Yes
Yes
No
Create nonunique� index
Create unique� index
Do not use � index
Use existing � index
Key�enabled?
Constraint�deferrable?
Constraint
Deferrable?
Is the index
nonunique?
Yes
No/Yes
No
13-10
Copyright © Oracle Corporation, 2001. All rights reserved.
Foreign Key Considerations
Appropriate Solution
Desired Action
Drop parent table Cascade constraints
Truncate parent table Disable or drop foreign key
Perform DML on child table Ensure that the tablespace containing the parent key is online
Use the CASCADE CONSTRAINTS clause
Drop tablespace containing�parent table
13-11
Copyright © Oracle Corporation, 2001. All rights reserved.
13-12
Copyright © Oracle Corporation, 2001. All rights reserved.
Defining Constraints While�Creating a Table
CREATE TABLE hr.employee(�id NUMBER(7) � CONSTRAINT employee_id_pk PRIMARY KEY� DEFERRABLE � USING INDEX� STORAGE(INITIAL 100K NEXT 100K)� TABLESPACE indx,
last_name VARCHAR2(25) � CONSTRAINT employee_last_name_nn NOT NULL,
dept_id NUMBER(7))
TABLESPACE users;
13-13
Copyright © Oracle Corporation, 2001. All rights reserved.
13-14
Copyright © Oracle Corporation, 2001. All rights reserved.
13-15
Copyright © Oracle Corporation, 2001. All rights reserved.
13-16
Copyright © Oracle Corporation, 2001. All rights reserved.
Guidelines for Defining Constraints
13-17
Copyright © Oracle Corporation, 2001. All rights reserved.
Enabling Constraints
ENABLE �NOVALIDATE
ALTER TABLE hr.departments�ENABLE NOVALIDATE CONSTRAINT dept_pk;
13-18
Copyright © Oracle Corporation, 2001. All rights reserved.
13-19
Copyright © Oracle Corporation, 2001. All rights reserved.
13-20
Copyright © Oracle Corporation, 2001. All rights reserved.
Enabling Constraints
ENABLE �VALIDATE
ALTER TABLE hr.employees�ENABLE VALIDATE CONSTRAINT emp_dept_fk;
13-21
Copyright © Oracle Corporation, 2001. All rights reserved.
13-22
Copyright © Oracle Corporation, 2001. All rights reserved.
Using the EXCEPTIONS Table
13-23
Copyright © Oracle Corporation, 2001. All rights reserved.
13-24
Copyright © Oracle Corporation, 2001. All rights reserved.
13-25
Copyright © Oracle Corporation, 2001. All rights reserved.
Obtaining Constraint Information
Obtain information about constraints by querying the following views:
13-26
Copyright © Oracle Corporation, 2001. All rights reserved.
13-27
Copyright © Oracle Corporation, 2001. All rights reserved.
13-28
Copyright © Oracle Corporation, 2001. All rights reserved.
Summary
In this lesson, you should have learned how to:
13-29
Copyright © Oracle Corporation, 2001. All rights reserved.
Practice 13 Overview
This practice covers the following topics:
13-30
Copyright © Oracle Corporation, 2001. All rights reserved.
13-31
Copyright © Oracle Corporation, 2001. All rights reserved.
13-32
Copyright © Oracle Corporation, 2001. All rights reserved.