Sie sind auf Seite 1von 34

13

Maintaining Data Integrity

Copyright © Oracle Corporation, 2002. All rights reserved.


Objectives

After completing this lesson, you should be able to do


the following:
• Implement data integrity constraints
• Maintain integrity constraints
• Obtain constraint information

13-2 Copyright © Oracle Corporation, 2002. All rights reserved.


Data Integrity

Database Integrity
trigger constraint
Data

Application
code

Table

13-3 Copyright © Oracle Corporation, 2002. All rights reserved.


13-4 Copyright © Oracle Corporation, 2002. All rights reserved.
Types of Constraints

Constraint Description

NOT NULL Specifies that a column cannot contain null


values

UNIQUE Designates a column or combination of


columns as unique

PRIMARY KEY Designates a column or combination of


columns as the table’s primary key

FOREIGN KEY Designates a column or combination of


columns as the foreign key in a referential
integrity constraint
CHECK Specifies a condition that each row of the
table must satisfy

13-5 Copyright © Oracle Corporation, 2002. All rights reserved.


Constraint States

DISABLE DISABLE ENABLE ENABLE


NOVALIDATE VALIDATE NOVALIDATE VALIDATE

=
New data Existing data

13-6 Copyright © Oracle Corporation, 2002. All rights reserved.


13-7 Copyright © Oracle Corporation, 2002. All rights reserved.
Constraint Checking

DML statement

Check nondeferred
constraints

COMMIT

Check deferred
constraints

13-8 Copyright © Oracle Corporation, 2002. All rights reserved.


Defining Constraints
Immediate or Deferred

• Use the SET CONSTRAINTS statement to make


constraints either DEFERRED or IMMEDIATE.
• The ALTER SESSION statement also has clauses to
set constraints to DEFERRED or IMMEDIATE.

13-9 Copyright © Oracle Corporation, 2002. All rights reserved.


Primary and Unique Key Enforcement

Key Yes Is an index Yes Constraint Yes Is the index


enabled? available Deferrable? nonunique?
for use?

No No No/Yes
Use existing
Yes index
Constraint
deferrable?

No No
Do not use Create unique Create nonunique
index index index

13-10 Copyright © Oracle Corporation, 2002. All rights reserved.


Foreign Key Considerations

Desired Action Appropriate Solution

Drop parent table Cascade constraints

Truncate parent table Disable or drop foreign key

Drop tablespace containing Use the CASCADE


parent table CONSTRAINTS clause

Perform DML on child table Ensure that the tablespace


containing the parent key
is online

13-11 Copyright © Oracle Corporation, 2002. All rights reserved.


13-12 Copyright © Oracle Corporation, 2002. 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, 2002. All rights reserved.


13-14 Copyright © Oracle Corporation, 2002. All rights reserved.
13-15 Copyright © Oracle Corporation, 2002. All rights reserved.
13-16 Copyright © Oracle Corporation, 2002. All rights reserved.
Guidelines for Defining Constraints

• Primary and unique constraints:


– Place indexes in a separate tablespace.
– Use nonunique indexes if bulk loads are frequent.
• Self-referencing foreign keys:
– Define or enable foreign keys after the initial load.
– Defer constraint checking.

13-17 Copyright © Oracle Corporation, 2002. All rights reserved.


Enabling Constraints

• No locks on table
ENABLE • Primary and unique keys
NOVALIDATE must use nonunique
indexes

ALTER TABLE hr.departments


ENABLE NOVALIDATE CONSTRAINT dept_pk;

13-18 Copyright © Oracle Corporation, 2002. All rights reserved.


13-19 Copyright © Oracle Corporation, 2002. All rights reserved.
13-20 Copyright © Oracle Corporation, 2002. All rights reserved.
Enabling Constraints

• Locks the table


ENABLE • Can use unique or
VALIDATE nonunique indexes
• Needs valid table data

ALTER TABLE hr.employees


ENABLE VALIDATE CONSTRAINT emp_dept_fk;

13-21 Copyright © Oracle Corporation, 2002. All rights reserved.


13-22 Copyright © Oracle Corporation, 2002. All rights reserved.
Renaming Constraints

Use the following to rename a constraint:

ALTER TABLE employees


RENAME CONSTRAINT emp_dept_fk
TO employees_dept_fk;

13-23 Copyright © Oracle Corporation, 2002. All rights reserved.


13-24 Copyright © Oracle Corporation, 2002. All rights reserved.
Using the EXCEPTIONS Table

• Create the EXCEPTIONS table by running the


utlexpt1.sql script.
• Execute the ALTER TABLE statement with
EXCEPTIONS option.
• Use subquery on EXCEPTIONS to locate rows with
invalid data.
• Rectify the errors.
• Reexecute ALTER TABLE to enable the constraint.

13-25 Copyright © Oracle Corporation, 2002. All rights reserved.


13-26 Copyright © Oracle Corporation, 2002. All rights reserved.
13-27 Copyright © Oracle Corporation, 2002. All rights reserved.
Obtaining Constraint Information

Obtain information about constraints by querying the


following views:
• DBA_CONSTRAINTS
• DBA_CONS_COLUMNS

13-28 Copyright © Oracle Corporation, 2002. All rights reserved.


13-29 Copyright © Oracle Corporation, 2002. All rights reserved.
13-30 Copyright © Oracle Corporation, 2002. All rights reserved.
Summary

In this lesson, you should have learned how to:


• Implement data integrity
• Use an appropriate strategy to create and maintain
constraints
• Obtain constraint information

13-31 Copyright © Oracle Corporation, 2002. All rights reserved.


Practice 13 Overview

This practice covers the following topics:


• Creating constraints
• Enabling unique constraints
• Creating an EXCEPTIONS table
• Identifying existing constraint violations in a table,
correcting the errors, and reenabling the constraints

13-32 Copyright © Oracle Corporation, 2002. All rights reserved.


13-33 Copyright © Oracle Corporation, 2002. All rights reserved.
13-34 Copyright © Oracle Corporation, 2002. All rights reserved.

Das könnte Ihnen auch gefallen