constraints (restricciones) - andròmines · pdf filesql> alter table emp 2 drop...
TRANSCRIPT
Copyright Oracle Corporation, 1998. All rights reserved.
1111
Constraints (Restricciones)
Constraints (Restricciones)
11-2 Copyright Oracle Corporation, 1998. All rights reserved.
ObjetivosObjetivos
Al completar esta lección, debería ser capaz de hacer lo siguiente:
• Describir constraints
• Crear y mantener constraints
Al completar esta lecciAl completar esta lecci óón, debern, deber íía ser capaz a ser capaz de hacer lo siguiente:de hacer lo siguiente:
• Describir constraints
• Crear y mantener constraints
11-3 Copyright Oracle Corporation, 1998. All rights reserved.
¿Qué son las Constraints?¿Qué son las Constraints?
• “Fuerzan reglas a nivel de tabla”
• Las constraints previenen el borrado de una tabla si existen dependencias.
• Los siguientes tipos de constrainst son válidos en Oracle8:– NOT NULL– UNIQUE Key– PRIMARY KEY– FOREIGN KEY– CHECK
• “Fuerzan reglas a nivel de tabla”
• Las constraints previenen el borrado de una tabla si existen dependencias.
• Los siguientes tipos de constrainst son válidos en Oracle8:– NOT NULL– UNIQUE Key– PRIMARY KEY– FOREIGN KEY– CHECK
11-4 Copyright Oracle Corporation, 1998. All rights reserved.
Guía para el Uso de ConstraintsGuía para el Uso de Constraints
•• Asigne un nombre a la restricciAsigne un nombre a la restricci óón, en n, en caso contrario el Server generarcaso contrario el Server generar áá uno uno usando el formato SYS_Cusando el formato SYS_C nn..
•• Se puede crear una restricciSe puede crear una restricci óónn
––En el momento de crear la tabla.En el momento de crear la tabla.
––DespuDespu éés que la tabla ha sido creada.s que la tabla ha sido creada.
•• Se puede definir un restricciSe puede definir un restricci óón a nivel de n a nivel de columna o a nivel de tabla.columna o a nivel de tabla.
•• Vea la constraint en el diccionario de Vea la constraint en el diccionario de datos.datos.
11-5 Copyright Oracle Corporation, 1998. All rights reserved.
Definición de ConstraintsDefinición 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-6 Copyright Oracle Corporation, 1998. All rights reserved.
Definición de ConstraintsDefinición de Constraints
• Constraint a nivel de columna:
• Constraint a nivel de tabla:
• Constraint a nivel de columna:
• Constraint a nivel de tabla:
column [CONSTRAINT constraint_name] constraint_type,column [CONSTRAINT constraint_name] constraint_type,
column,...[CONSTRAINT constraint_name] constraint_type( column, ...),
column,...[CONSTRAINT constraint_name] constraint_type( column, ...),
11-7 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint NOT NULLLa Constraint NOT NULL
Asegura que los valores nulos no serán permitidos para la columna.Asegura que los valores nulos no serAsegura que los valores nulos no ser áán n permitidos para la columna.permitidos para la columna.
EMPEMPEMPNO ENAME JOB ... COMM DEPTNO
7839 KING PRESIDENT 107698 BLAKE MANAGER 307782 CLARK MANAGER 107566 JONES MANAGER 20...
NOT NULL constraintNOT NULL constraint(ning(ning úún registro podrn registro podr áácontener un valor nulocontener un valor nulopara esta columna)para esta columna)
Ausencia de la Ausencia de la constraint NOT NULLconstraint NOT NULL(cualquier reg. puede (cualquier reg. puede contener un valor nulo contener un valor nulo para esta columna)para esta columna)
Constraint NOT NULLConstraint NOT NULL
11-8 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint NOT NULLLa Constraint NOT NULL
Definido a nivel de columna:Definido a nivel de columna:Definido a nivel de 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-9 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint UNIQUE KeyLa Constraint UNIQUE Key
DEPT DEPT DEPTNO DNAME LOC ------ ---------- --------
10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON
Constraint UNIQUE keyConstraint UNIQUE key
50 SALES DETROIT
60 BOSTON
Insert intoInsert into No permitido No permitido (DNAME(DNAMESALESya existe)ya existe)
permitidopermitido
11-10 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint UNIQUE KeyLa Constraint UNIQUE Key
Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna:
SQL> CREATE TABLE dept(2 deptno NUMBER(2),3 dname VARCHAR2(14),4 loc VARCHAR2(13),5 CONSTRAINT dept_dname_uk UNIQUE);
11-11 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint PRIMARY KEYLa Constraint PRIMARY KEY
DEPT DEPT DEPTNO DNAME LOC ------ ---------- --------
10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON
PRIMARY keyPRIMARY key
Insert intoInsert into
20 MARKETING DALLAS
FINANCE NEW YORK
No permitido No permitido (DEPTNO(DEPTNO20 20 ya existe)ya existe)No permitidoNo permitido(DEPTNO es null)(DEPTNO es null)
11-12 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint PRIMARY KEYLa Constraint PRIMARY KEY
Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de 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-13 Copyright Oracle Corporation, 1998. All rights reserved.
The FOREIGN KEY ConstraintThe FOREIGN KEY ConstraintDEPT DEPT DEPTNO DNAME LOC ------ ---------- --------
10 ACCOUNTING NEW YORK20 RESEARCH DALLAS
...
PRIMARYPRIMARYkeykey
EMPEMPEMPNO ENAME JOB ... COMM DEPTNO
7839 KING PRESIDENT 107698 BLAKE MANAGER 30...
FOREIGNFOREIGNkeykey
7571 FORD MANAGER ... 200 97571 FORD MANAGER ... 200
Insert intoInsert into
No permitidoNo permitido(DEPTNO(DEPTNO9999no existe en la no existe en la tabla DEPTtabla DEPT
PermitidoPermitido
11-14 Copyright Oracle Corporation, 1998. All rights reserved.
The FOREIGN KEY ConstraintThe FOREIGN KEY Constraint
Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de 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-15 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint FOREIGN KEY Palabras Reservadas
La Constraint FOREIGN KEY Palabras Reservadas
• FOREIGN KEY– Define la columna en la tabla hija a
nivel de constraint de tabla• REFERENCES
– Identifica la tabla y columna en la tabla padre
• ON DELETE CASCADE– Permite borrar en la tabla padre y
borrar registros dependientes de la tabla hija.
• FOREIGN KEY– Define la columna en la tabla hija a
nivel de constraint de tabla• REFERENCES
– Identifica la tabla y columna en la tabla padre
• ON DELETE CASCADE– Permite borrar en la tabla padre y
borrar registros dependientes de la tabla hija.
11-16 Copyright Oracle Corporation, 1998. All rights reserved.
La Constraint CHECKLa Constraint CHECK•• Define una condiciDefine una condici óón que debe satisfacer cada fila.n que debe satisfacer cada fila.
•• Expresiones no permitidas:Expresiones no permitidas:
–– Referencias a las pseudocolumnas CURRVAL, Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL, o ROWNUM.NEXTVAL, LEVEL, o ROWNUM.
–– Llamadas a las funciones SYSDATE, UID, USER, o Llamadas a las funciones SYSDATE, UID, USER, o USERENV.USERENV.
–– Consultas que se refieran a otros valores en otras Consultas que se refieran a otros valores en otras filas.filas.
•• Se define o bien como una restricciSe define o bien como una restricci óón a nivel de tabla, o n a nivel de tabla, o a nivel de columna.a nivel de columna.
..., deptno NUMBER(2),CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
11-17 Copyright Oracle Corporation, 1998. All rights reserved.
Añadir una ConstraintAñadir una Constraint
• Añade o borra, pero no modifica una constraint.
• Activa-Desactiva constraints.
• Añade una constraint NOT NULL con la cláusula MODIFY.
• Añade o borra, pero no modifica una constraint.
• Activa-Desactiva constraints.
• Añade una constraint NOT NULL con la cláusula MODIFY.
ALTER TABLE tableADD [CONSTRAINT constraint] type ( column);
ALTER TABLE tableADD [CONSTRAINT constraint] type ( column);
11-18 Copyright Oracle Corporation, 1998. All rights reserved.
Añadir una ConstraintAñadir una Constraint
Añada una constraint FOREIGN KEY en la tabla EMP indicando que un manager (director) tiene que existir previamente como n úmero de empleado.
AAññada una constraint FOREIGN KEY en la ada una constraint FOREIGN KEY en la tabla EMP indicando que un manager tabla EMP indicando que un manager (director) tiene que existir previamente (director) tiene que existir previamente como ncomo n úúmero de empleado.mero de empleado.
SQL> ALTER TABLE emp2 ADD CONSTRAINT emp_mgr_fk 3 FOREIGN KEY(mgr) REFERENCES emp(empno);
Table altered.Table altered.
11-19 Copyright Oracle Corporation, 1998. All rights reserved.
Eliminación de una ConstraintEliminación de una Constraint
• Borra la constraint del manager de la tabla EMP.
• Borra la constraint del manager de la tabla EMP.
SQL> ALTER TABLE emp2 DROP CONSTRAINTemp_mgr_fk;
Table altered.
SQL> ALTER TABLE emp2 DROP CONSTRAINTemp_mgr_fk;
Table altered.Table altered.
• Borra la constraint de PRIMARY KEY de la tabla DEPT y borra la constraint de FOREIGN KEY asociada en la columna EMP.DEPTNO.
• Borra la constraint de PRIMARY KEY de la tabla DEPT y borra la constraint de FOREIGN KEY asociada en la columna EMP.DEPTNO.
SQL> ALTER TABLE dept2 DROP PRIMARY KEY CASCADE;
Table altered.
SQL> ALTER TABLE dept2 DROP PRIMARY KEY CASCADE;
Table altered.Table altered.
11-20 Copyright Oracle Corporation, 1998. All rights reserved.
Desactivar ConstraintsDesactivar Constraints
• Ejecute la cláusula DISABLE de la sentencia ALTER TABLE para desactivar una constraint de integridad.
• Utilice la opción CASCADE para desactivar constrains dependientes.
• Ejecute la cláusula DISABLE de la sentencia ALTER TABLE para desactivar una constraint de integridad.
• Utilice la opción CASCADE para desactivar constrains dependientes.
SQL> ALTER TABLE emp2 DISABLE CONSTRAINT emp_empno_pk CASCADE;
Table altered.
SQL> ALTER TABLE emp2 DISABLE CONSTRAINT emp_empno_pk CASCADE;
Table altered.Table altered.
11-21 Copyright Oracle Corporation, 1998. All rights reserved.
Activar ConstraintsActivar Constraints
• Active una constraint de integridad actualmente desactivada en la definición de la tabla, por medio de la cláusula ENABLE.
• Un índice UNIQUE o de PRIMARY KEY se crea autom áticamente si activa una constraint tipo UNIQUE o PRIMARY KEY
• Active una constraint de integridad actualmente desactivada en la definición de la tabla, por medio de la cláusula ENABLE.
• Un índice UNIQUE o de PRIMARY KEY se crea autom áticamente si activa una constraint tipo UNIQUE o PRIMARY KEY
SQL> ALTER TABLE emp2 ENABLE CONSTRAINT emp_empno_pk;
Table altered.
SQL> ALTER TABLE emp2 ENABLE CONSTRAINT emp_empno_pk;
Table altered.Table altered.
11-22 Copyright Oracle Corporation, 1998. All rights reserved.
Visualización de ConstraintsVisualización de Constraints
Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones de constraints.
Consulte la tabla USER_CONSTRAINTS Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones para ver todos los nombres y definiciones de constraints. de constraints.
CONSTRAINT_NAME C SEARCH_CONDITION------------------------ - -------------------------SYS_C00674 C EMPNO IS NOT NULL SYS_C00675 C DEPTNO IS NOT NULLEMP_EMPNO_PK P...
CONSTRAINT_NAME C SEARCH_CONDITION------------------------ - -------------------------SYS_C00674 C EMPNO IS NOT NULL SYS_C00675 C DEPTNO IS NOT NULLEMP_EMPNO_PK P...
SQL> SELECT constraint_name, constraint_type,2 search_condition3 FROM user_constraints4 WHERE table_name = 'EMP';
11-23 Copyright Oracle Corporation, 1998. All rights reserved.
Visualización de las Columnas Asociadas con Constraints
Visualización de las Columnas Asociadas con Constraints
CONSTRAINT_NAME COLUMN_NAME------------------------- ----------------------EMP_DEPTNO_FK DEPTNOEMP_EMPNO_PK EMPNOEMP_MGR_FK MGRSYS_C00674 EMPNOSYS_C00675 DEPTNO
CONSTRAINT_NAME COLUMN_NAME------------------------- ----------------------EMP_DEPTNO_FK DEPTNOEMP_EMPNO_PK EMPNOEMP_MGR_FK MGRSYS_C00674 EMPNOSYS_C00675 DEPTNO
SQL> SELECT constraint_name, column_name2 FROM user_cons_columns3 WHERE table_name = 'EMP';
Visualice las columnas asociadas con los nombres de constraints en la vista:USER_CONS_COLUMNS
Visualice las columnas asociadas con los Visualice las columnas asociadas con los nombres de constraints en la vista:nombres de constraints en la vista:USER_CONS_COLUMNSUSER_CONS_COLUMNS
11-24 Copyright Oracle Corporation, 1998. All rights reserved.
ResumenResumen
• Cree los siguientes tipos de constraints:
– NOT NULL
– UNIQUE Key
– PRIMARY KEY
– FOREIGN KEY
– CHECK
• Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones de constraints.
• Cree los siguientes tipos de constraints:
– NOT NULL
– UNIQUE Key
– PRIMARY KEY
– FOREIGN KEY
– CHECK
• Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones de constraints.
11-25 Copyright Oracle Corporation, 1998. All rights reserved.
Visión General de la PrácticaVisión General de la Práctica
• Añada constraints a tablas ya existentes.
• Añada columnas adicionales a una tabla.
• Visualice información de vistas del D.D.
• Añada constraints a tablas ya existentes.
• Añada columnas adicionales a una tabla.
• Visualice información de vistas del D.D.