Vous êtes sur la page 1sur 25

11

Constraints
(Restricciones)

Copyright Oracle Corporation, 1998. All rights reserved.


Objetivos

Al
Al completar
completar esta
esta lecci n, deber
leccin, a ser
debera ser capaz
capaz
de
de hacer
hacer lo
lo siguiente:
siguiente:
Describir
Describir constraints
constraints
Crear
Crear yy mantener
mantener constraints
constraints

11-2 Copyright Oracle Corporation, 1998. All rights reserved.


Qu son las Constraints?
Fuerzan
Fuerzan reglas
reglas aa nivel
nivel de
de tabla
tabla
Las
Las constraints
constraints previenen
previenen elel borrado
borrado de
de
una
una tabla
tabla si
si existen
existen dependencias.
dependencias.
Los
Los siguientes
siguientes tipos
tipos de
de constrainst
constrainst son
son
vlidos
vlidos enen Oracle8:
Oracle8:
NOT
NOT NULL
NULL
UNIQUE
UNIQUE KeyKey
PRIMARY
PRIMARY KEY KEY
FOREIGN
FOREIGN KEYKEY
CHECK
CHECK
11-3 Copyright Oracle Corporation, 1998. All rights reserved.
Gua para el Uso de Constraints
Asigne un nombre a la restriccin, en
caso contrario el Server generar uno
usando el formato SYS_Cn.
Se puede crear una restriccin
En el momento de crear la tabla.
Despus que la tabla ha sido creada.
Se puede definir un restriccin a nivel de
columna o a nivel de tabla.
Vea la constraint en el diccionario de
datos.
11-4 Copyright Oracle Corporation, 1998. All rights reserved.
Definicin de Constraints
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],

[table_constraint]);

CREATE TABLE emp(


(empno NUMBER(4),
ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));

11-5 Copyright Oracle Corporation, 1998. All rights reserved.


Definicin de Constraints

Constraint
Constraint aa nivel
nivel de
de columna:
columna:
column
column [CONSTRAINT
[CONSTRAINT constraint_name]
constraint_name] constraint_type,
constraint_type,

Constraint
Constraint aa nivel
nivel de
de tabla:
tabla:
column,...
column,...
[CONSTRAINT
[CONSTRAINT constraint_name]
constraint_name] constraint_type
constraint_type
(column,
(column, ...),
...),

11-6 Copyright Oracle Corporation, 1998. All rights reserved.


La Constraint NOT NULL
Asegura
Asegura que
que los
los valores
valores nulos
nulos no
no ser n
sern
permitidos
permitidos para
para la
la columna.
columna.
EMP
EMPNO ENAME JOB ... COMM DEPTNO

7839 KING PRESIDENT 10


7698 BLAKE MANAGER 30
7782 CLARK MANAGER 10
7566 JONES MANAGER 20
...

NOT NULL constraint Ausencia de la Constraint NOT NULL


(ningn registro podr constraint NOT NULL
contener un valor nulo (cualquier reg. puede
para esta columna) contener un valor nulo
para esta columna)
11-7 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint NOT NULL
Definido
Definido aa nivel
nivel de
de columna:
columna:
SQL> CREATE TABLE emp(
2 empno NUMBER(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL);

11-8 Copyright Oracle Corporation, 1998. All rights reserved.


La Constraint UNIQUE Key
Constraint UNIQUE key
DEPT
DEPTNO DNAME LOC
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

Insert into No permitido


50 SALES DETROIT (DNAMESALES
(DNAME
ya existe)
60 BOSTON permitido

11-9 Copyright Oracle Corporation, 1998. All rights reserved.


La Constraint UNIQUE Key
Definido
Definido bien
bien aa nivel
nivel de
de tabla
tabla o
o de
de columna:
columna:

SQL> CREATE TABLE dept(


2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE);

11-10 Copyright Oracle Corporation, 1998. All rights reserved.


La Constraint PRIMARY KEY
PRIMARY key
DEPT
DEPTNO DNAME LOC
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

Insert into No permitido


20 MARKETING DALLAS (DEPTNO
(DEPTNO 20
ya existe)
FINANCE NEW YORK No permitido
(DEPTNO es null)

11-11 Copyright Oracle Corporation, 1998. All rights reserved.


La Constraint PRIMARY KEY

Definido
Definido bien
bien aa nivel
nivel de
de tabla
tabla o
o de
de columna:
columna:

SQL> CREATE TABLE dept(


2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE,
6 CONSTRAINT dept_deptno_pk PRIMARY KEY);

11-12 Copyright Oracle Corporation, 1998. All rights reserved.


The FOREIGN KEY Constraint
DEPT
PRIMARY DEPTNO DNAME LOC
key ------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
...
EMP
EMPNO ENAME JOB ... COMM DEPTNO FOREIGN
key
7839 KING PRESIDENT 10
7698 BLAKE MANAGER 30
...
No permitido
(DEPTNO9
(DEPTNO
Insert into no existe en la
tabla DEPT
7571 FORD MANAGER ... 200 9
7571 FORD MANAGER ... 200 Permitido

11-13 Copyright Oracle Corporation, 1998. All rights reserved.


The FOREIGN KEY Constraint

Definido
Definido bien
bien aa nivel
nivel de
de tabla
tabla o
o de
de columna:
columna:
SQL> CREATE TABLE emp(
2 empno NUMBER(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL,
10 CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
11 REFERENCES dept (deptno));

11-14 Copyright Oracle Corporation, 1998. All rights reserved.


La Constraint FOREIGN KEY
Palabras Reservadas
FOREIGN
FOREIGN KEY KEY
Define
Define la
la columna
columna en en la
la tabla
tabla hija
hija aa
nivel
nivel de
de constraint
constraint de de tabla
tabla
REFERENCES
REFERENCES
Identifica
Identifica la
la tabla
tabla yy columna
columna en en la
la
tabla
tabla padre
padre
ON
ON DELETE
DELETE CASCADE
CASCADE
Permite
Permite borrar
borrar en
en la
la tabla
tabla padre
padre yy
borrar
borrar registros
registros dependientes
dependientes de de lala
tabla
tabla hija.
hija.
11-15 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint CHECK
Define una condicin que debe satisfacer cada fila.
Expresiones no permitidas:
Referencias a las pseudocolumnas CURRVAL,
NEXTVAL, LEVEL, o ROWNUM.
Llamadas a las funciones SYSDATE, UID, USER, o
USERENV.
Consultas que se refieran a otros valores en otras
filas.
Se define o bien como una restriccin a nivel de tabla, o
a nivel de columna.
..., deptno NUMBER(2),
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...

11-16 Copyright Oracle Corporation, 1998. All rights reserved.


Aadir una Constraint

ALTER
ALTER TABLE
TABLE table
table
ADD
ADD [CONSTRAINT
[CONSTRAINT constraint]
constraint] type
type (column);
(column);

Aade
Aade oo borra,
borra, pero
pero no
no modifica
modifica una
una
constraint.
constraint.
Activa-Desactiva
Activa-Desactiva constraints.
constraints.
Aade
Aade una
una constraint
constraint NOT
NOT NULL
NULL con
con la
la
clusula
clusula MODIFY.
MODIFY.

11-17 Copyright Oracle Corporation, 1998. All rights reserved.


Aadir una Constraint
A ada una
Aada una constraint
constraint FOREIGN
FOREIGN KEYKEY en
en la
la
tabla
tabla EMP
EMP indicando
indicando que
que unun manager
manager
(director)
(director) tiene
tiene que
que existir
existir previamente
previamente
como
como n mero de
nmero de empleado.
empleado.
SQL> ALTER TABLE emp
2 ADD CONSTRAINT emp_mgr_fk
3 FOREIGN KEY(mgr) REFERENCES emp(empno);
Table altered.

11-18 Copyright Oracle Corporation, 1998. All rights reserved.


Eliminacin de una Constraint
Borra
Borra la
la constraint
constraint del
del manager
manager de
de la
la
tabla
tabla EMP.
EMP.
SQL>
SQL> ALTER
ALTER TABLE
TABLE emp
emp
22 DROP
DROP CONSTRAINTemp_mgr_fk;
CONSTRAINTemp_mgr_fk;
Table
Table altered.
altered.

Borra
Borra la
la constraint
constraint de
de PRIMARY
PRIMARY KEYKEY de
de
la
la tabla
tabla DEPT
DEPT yy borra
borra la
la constraint
constraint de
de
FOREIGN
FOREIGN KEY KEY asociada
asociada en en la
la columna
columna
EMP.DEPTNO.
EMP.DEPTNO.
SQL>
SQL> ALTER
ALTER TABLE
TABLE dept
dept
22 DROP
DROP PRIMARY
PRIMARY KEY
KEY CASCADE;
CASCADE;
Table
Table altered.
altered.

11-19 Copyright Oracle Corporation, 1998. All rights reserved.


Desactivar Constraints
Ejecute
Ejecute lala clusula
clusula DISABLE
DISABLE de de la
la
sentencia
sentencia ALTER
ALTER TABLE
TABLE para
para
desactivar
desactivar unauna constraint
constraint de
de integridad.
integridad.
Utilice
Utilice la
la opcin
opcin CASCADE
CASCADE parapara
desactivar
desactivar constrains
constrains dependientes.
dependientes.
SQL>
SQL> ALTER
ALTER TABLE
TABLE emp
emp
22 DISABLE
DISABLE CONSTRAINT
CONSTRAINT emp_empno_pk
emp_empno_pk CASCADE;
CASCADE;
Table
Table altered.
altered.

11-20 Copyright Oracle Corporation, 1998. All rights reserved.


Activar Constraints
Active
Active una
una constraint
constraint dede integridad
integridad
actualmente
actualmente desactivada
desactivada en en la
la
definicin
definicin de
de la
la tabla,
tabla, por
por medio
medio de
de la
la
clusula
clusula ENABLE.
ENABLE.
SQL>
SQL> ALTER
ALTER TABLE
TABLE emp
emp
22 ENABLE
ENABLE CONSTRAINT
CONSTRAINT emp_empno_pk;
emp_empno_pk;
Table
Table altered.
altered.

Un
Un ndice
ndice UNIQUE
UNIQUE o o de
de PRIMARY
PRIMARY KEY KEY
se
se crea
crea automticamente
automticamente sisi activa
activa una
una
constraint
constraint tipo
tipo UNIQUE
UNIQUE oo PRIMARY
PRIMARY KEYKEY

11-21 Copyright Oracle Corporation, 1998. All rights reserved.


Visualizacin de Constraints
Consulte
Consulte la
la tabla
tabla USER_CONSTRAINTS
USER_CONSTRAINTS
para
para ver
ver todos
todos los
los nombres
nombres yy definiciones
definiciones
de
de constraints.
constraints.
SQL> SELECT constraint_name, constraint_type,
2 search_condition
3 FROM user_constraints
4 WHERE table_name = 'EMP';

CONSTRAINT_NAME
CONSTRAINT_NAME CC SEARCH_CONDITION
SEARCH_CONDITION
------------------------
------------------------ -- -------------------------
-------------------------
SYS_C00674
SYS_C00674 CC EMPNO
EMPNO IS
IS NOT
NOT NULL
NULL
SYS_C00675
SYS_C00675 CC DEPTNO
DEPTNO IS
IS NOT
NOT NULL
NULL
EMP_EMPNO_PK
EMP_EMPNO_PK PP
...
...

11-22 Copyright Oracle Corporation, 1998. All rights reserved.


Visualizacin de las Columnas
Asociadas con Constraints
Visualice
Visualice las
las columnas
columnas asociadas
asociadas con
con los
los
nombres
nombres dede constraints
constraints en
en la
la vista:
vista:
USER_CONS_COLUMNS
USER_CONS_COLUMNS
SQL> SELECT constraint_name, column_name
2 FROM user_cons_columns
3 WHERE table_name = 'EMP';

CONSTRAINT_NAME
CONSTRAINT_NAME COLUMN_NAME
COLUMN_NAME
-------------------------
------------------------- ----------------------
----------------------
EMP_DEPTNO_FK
EMP_DEPTNO_FK DEPTNO
DEPTNO
EMP_EMPNO_PK
EMP_EMPNO_PK EMPNO
EMPNO
EMP_MGR_FK
EMP_MGR_FK MGR
MGR
SYS_C00674
SYS_C00674 EMPNO
EMPNO
SYS_C00675
SYS_C00675 DEPTNO
DEPTNO
11-23 Copyright Oracle Corporation, 1998. All rights reserved.
Resumen
Cree
Cree los
los siguientes
siguientes tipos
tipos de
de constraints:
constraints:
NOT
NOT NULL
NULL
UNIQUE
UNIQUE Key
Key
PRIMARY
PRIMARY KEY
KEY
FOREIGN
FOREIGN KEY
KEY
CHECK
CHECK
Consulte
Consulte la
la tabla
tabla USER_CONSTRAINTS
USER_CONSTRAINTS para para
ver
ver todos
todos los
los nombres
nombres yy definiciones
definiciones de
de
constraints.
constraints.
11-24 Copyright Oracle Corporation, 1998. All rights reserved.
Visin General de la Prctica

Aada
Aada constraints
constraints aa tablas
tablas ya
ya existentes.
existentes.
Aada
Aada columnas
columnas adicionales
adicionales aa una
una tabla.
tabla.
Visualice
Visualice informacin
informacin de
de vistas
vistas del
del D.D.
D.D.

11-25 Copyright Oracle Corporation, 1998. All rights reserved.

Vous aimerez peut-être aussi