Está en la página 1de 25

11

Constraints (Restricciones)

Copyright Oracle Corporation, 1998. All rights reserved.

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

11-2

Copyright Oracle Corporation, 1998. All rights reserved.

Qu son las Constraints?


Fuerzan Fuerzan reglas reglas a a nivel nivel de de tabla tabla Las Las constraints constraints previenen previenen el el 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 en en Oracle8: Oracle8: NOT NOT NULL NULL UNIQUE UNIQUE Key Key PRIMARY PRIMARY KEY KEY FOREIGN FOREIGN KEY KEY 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.


11-4

Se puede definir un restriccin a nivel de columna o a nivel de tabla. Vea la constraint en el diccionario de datos.
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 a a nivel nivel de de columna: columna:
column ] , column [CONSTRAINT [CONSTRAINT constraint_name constraint_name ] constraint_type constraint_type ,

Constraint Constraint a a 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 n Asegura que que los los valores valores nulos nulos no no ser sern permitidos permitidos para para la la columna. columna.
EMP
EMPNO ENAME 7839 7698 7782 7566 ... KING BLAKE CLARK JONES JOB PRESIDENT MANAGER MANAGER MANAGER ... COMM DEPTNO 10 30 10 20

NOT NULL constraint (ningn registro podr contener un valor nulo para esta columna)
11-7

Ausencia de la Constraint NOT NULL constraint NOT NULL (cualquier reg. puede contener un valor nulo para esta columna)

Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint NOT NULL


Definido Definido a a nivel nivel de de columna: columna:
SQL> CREATE TABLE 2 empno 3 ename 4 job 5 mgr 6 hiredate 7 sal 8 comm 9 deptno emp( NUMBER(4), VARCHAR2(10) NOT NULL, VARCHAR2(9), NUMBER(4), DATE, NUMBER(7,2), NUMBER(7,2), NUMBER(7,2) NOT NULL);

11-8

Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint UNIQUE Key


Constraint UNIQUE key

DEPT
DEPTNO -----10 20 30 40 DNAME ---------ACCOUNTING RESEARCH SALES OPERATIONS LOC -------NEW YORK DALLAS CHICAGO BOSTON

Insert into 50 SALES 60 DETROIT BOSTON

No permitido (DNAMESALES ya existe) permitido

11-9

Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint UNIQUE Key


Definido Definido bien bien a a 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 -----10 20 30 40 DNAME ---------ACCOUNTING RESEARCH SALES OPERATIONS LOC -------NEW YORK DALLAS CHICAGO BOSTON

Insert into 20 MARKETING DALLAS FINANCE NEW YORK

No permitido (DEPTNO20 ya existe) No permitido (DEPTNO es null)

11-11

Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint PRIMARY KEY


Definido Definido bien bien a a 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 key DEPTNO -----10 20 ... DNAME ---------ACCOUNTING RESEARCH LOC -------NEW YORK DALLAS

EMP
EMPNO ENAME 7839 KING 7698 BLAKE ... JOB PRESIDENT MANAGER ... COMM DEPTNO 10 30 No permitido (DEPTNO9 no existe en la tabla DEPT Permitido FOREIGN key

Insert into 7571 FORD 7571 FORD


11-13

MANAGER MANAGER

... ...

200 200

Copyright Oracle Corporation, 1998. All rights reserved.

The FOREIGN KEY Constraint


Definido Definido bien bien a a 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 a a nivel nivel de de constraint constraint de de tabla tabla REFERENCES REFERENCES Identifica Identifica la la tabla tabla y y 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 y y borrar borrar registros registros dependientes dependientes de de la la 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 ] column ); ADD [CONSTRAINT [CONSTRAINT constraint constraint ] type type ( ( column );

Aade Aade o o 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 KEY KEY en en la la tabla tabla EMP EMP indicando indicando que que un un manager manager (director) (director) tiene tiene que que existir existir previamente previamente como mero de como n 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> emp SQL> ALTER ALTER TABLE TABLE emp 2 2 DROP DROP CONSTRAINTemp_mgr_fk; CONSTRAINTemp_mgr_fk; Table Table altered. altered.

Borra Borra la la constraint constraint de de PRIMARY PRIMARY KEY KEY de de la la tabla tabla DEPT DEPT y y 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> dept SQL> ALTER ALTER TABLE TABLE dept 2 2 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 la la clusula clusula DISABLE DISABLE de de la la sentencia sentencia ALTER ALTER TABLE TABLE para para desactivar desactivar una una constraint constraint de de integridad. integridad. Utilice Utilice la la opcin opcin CASCADE CASCADE para para desactivar desactivar constrains constrains dependientes. dependientes.
SQL> SQL> ALTER ALTER TABLE TABLE 2 2 DISABLE DISABLE CONSTRAINT CONSTRAINT Table Table altered. altered. emp emp emp_empno_pk emp_empno_pk CASCADE; CASCADE;

11-20

Copyright Oracle Corporation, 1998. All rights reserved.

Activar Constraints
Active Active una una constraint constraint de de 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 2 2 ENABLE ENABLE CONSTRAINT CONSTRAINT Table Table altered. altered. emp emp emp_empno_pk; emp_empno_pk;

Un Un ndice ndice UNIQUE UNIQUE o o de de PRIMARY PRIMARY KEY KEY se se crea crea automticamente automticamente si si activa activa una una constraint constraint tipo tipo UNIQUE UNIQUE o o PRIMARY PRIMARY KEY KEY
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 y y definiciones definiciones de de constraints. constraints.
SQL> 2 3 4 SELECT constraint_name, constraint_type, search_condition FROM user_constraints WHERE table_name = 'EMP'; C C SEARCH_CONDITION SEARCH_CONDITION - ------------------------------------------------C C EMPNO EMPNO IS IS NOT NOT NULL NULL C C DEPTNO DEPTNO IS IS NOT NOT NULL NULL P P

CONSTRAINT_NAME CONSTRAINT_NAME ----------------------------------------------SYS_C00674 SYS_C00674 SYS_C00675 SYS_C00675 EMP_EMPNO_PK EMP_EMPNO_PK ... ...

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 de de constraints constraints en en la la vista: vista: USER_CONS_COLUMNS USER_CONS_COLUMNS
SQL> SELECT 2 FROM 3 WHERE constraint_name, column_name user_cons_columns table_name = 'EMP'; COLUMN_NAME COLUMN_NAME ------------------------------------------DEPTNO DEPTNO EMPNO EMPNO MGR MGR EMPNO EMPNO DEPTNO DEPTNO

CONSTRAINT_NAME CONSTRAINT_NAME ------------------------------------------------EMP_DEPTNO_FK EMP_DEPTNO_FK EMP_EMPNO_PK EMP_EMPNO_PK EMP_MGR_FK EMP_MGR_FK SYS_C00674 SYS_C00674 SYS_C00675 SYS_C00675
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 y y definiciones definiciones de de constraints. constraints.
11-24 Copyright Oracle Corporation, 1998. All rights reserved.

Visin General de la Prctica


Aada Aada constraints constraints a a tablas tablas ya ya existentes. existentes. Aada Aada columnas columnas adicionales adicionales a a 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.

También podría gustarte