Professional Documents
Culture Documents
El servidor Oracle usa restricciones, llamadas constraints, para prevenir la entrada de datos no vlidos en las tablas. Los siguientes tipos de restricciones son vlidos en Oracle: NOT NULL UNIQUE Keyb PRIMARY KEY FOREIGN KEY CHECK
Puede consultar la tabla USER_CONSTRAINTS para visualizar todas las definiciones de constraints y sus nombres.
Objetivo
En esta leccin, aprender a implementar reglas de negocio a travs de restricciones de integridad (Integrity Constraints).
Restricciones
El servidor Oracle utiliza las constraints para prevenir la entrada de datos no vlidos en una tabla. Se pueden usar restricciones para: Garantizar el cumplimiento de las reglas a nivel de tablas, en cualquier momento que una fila es insertada, actualizada o borrada de la tabla. La restriccin debe ser satisfecha para que la operacin tenga xito. Impedir la eliminacin de una tabla si existen dependencias desde otras tablas. Ofrece reglas para las herramientas Oracle, tales como Developer/2000.
Especifica que esta columna no puede contener un valor nulo. Especifica una columna o combinacin de ellas cuyos valores deben ser nicos para todas las filas en la tabla. Identifica unvocamente a cada fila de la tabla. Establece y garantiza una relacin de clave ajena entre la columna y una columna de la tabla referenciada. Especifica una condicin que debe ser verdadera.
2. Convenciones para los Nombres de las Restricciones Todas las restricciones se encuentran almacenadas en el diccionario de datos. Las restricciones son fciles de referenciar si se les da un nombre significativo. Los nombres deben seguir las reglas standard para los nombres de los objetos. Si no se le asigna un nombre a la restriccin, Oracle genera uno con el formato SYS_Cn, donde n es un entero para crear un nombre nico. Notas: Las restricciones pueden ser definidas al crear la tabla o despus. Puede ver las restricciones de una tabla especfica, mediante la tabla USER_CONSTRAINTS del diccionario de datos. 3. Definicin de Restricciones
es el mismo que el nombre del propietario. es el nombre de la tabla. especifica un valor por defecto, si se omite el valor durante un INSERT. es el nombre de la columna. es el tipo de dato y longitud de la columna. es una constraint de integridad a nivel de columna. es una constraint de integridad a nivel de tabla.
Las constraints se crean normalmente a la vez que se crea la tabla. Pueden ser aadidas despus de haber creado la tabla y tambin pueden desactivarse temporalmente.
Table
Anivel de columna:
A) La restriccin NOT NULL La restriccin NOT NULL asegura que en la columna no se permitirn valores nulos. Las columnas sin la restriccin NOT NULL pueden contener valores nulos, por defecto. Esta restriccin puede especificarse solamente al nivel de columna, no a nivel de tabla. El ejemplo, aplica una constraint NOT NULL a las columnas E_NOMB y DEP_NO de la tabla EMP. Dado que estas constraints no han sido nombradas explcitamente, el servidor Oracle, crear nombres implcitamente. Puede especificar el nombre de una constraint, al especificar la misma. deptno NUMBER(7) CONSTRAINT emp_deptno_nn NOT NULL;
B) La Restriccin de UNIQUE KEY Una restriccin UNIQUE requiere que cada valor en una columna o conjunto de columnas (clave) sean nicas ,es decir, dos registros de una tabla no tendrn valores duplicados para determinada columna o conjunto de columnas. La columna (o conjunto de columnas) incluidas en la definicin de la constraint de clave UNIQUE se conoce con el nombre de clave nica (unique key). Si la clave UNIQUE
Sin la opcin ON DELETE CASCADE, la fila en la tabla padre no puede ser borrada mientras haya referencias a ella en la tabla hija.
E) La Restriccin CHECK La restriccin CHECK define la condicin que cada fila debe satisfacer. La condicin puede usar la misma sintaxis que las condiciones de las consultas, con las siguientes excepciones: Llamadas a las funciones SYSDATE, UID, USER o USERENV Consultas que refieran a otros valores de otras filas Una columna simple puede tener varias restricciones CHECK que referencian la columna en su definicin. Pueden ser definidas tanto a nivel de columna como a nivel de tabla. La sintaxis de la restriccin puede aplicarse a cualquier columna en la tabla, no solamente a la columna sobre la que se est definiendo. 4. Aadir una Restriccin Puede aadir una restriccin para tablas ya existentes, usando la sentencia ALTER TABLE con la clusula ADD.
El nombre de la restriccin es opcional, aunque recomendado. Si no nombra la restriccin, el sistema generar un nombre automticamente. Gua de Escritura Puede aadir, borrar, activar o desactivar una restriccin, pero no modificar su estructura. Puede aadir una restriccin NOT NULL a una columna existente, usando la clusula MODIFY de la sentencia ALTER TABLE.
ALTER TABLE table DROP PRIMARY KEY | UNIQUE (column) | CONSTRAINT constraint [CASCADE];
donde: table column constraint es el nombre de la tabla. es el nombre de la columna afectada por la restriccin. es el nombre de la restriccin.
La opcin CASCADE de la clusula DROP provoca que cualquier restriccin dependiente, tambin se borre. Cuando borra una restriccin de integridad, esa restriccin ya no es parte del servidor Oracle y por tanto, no est disponible en el diccionario de datos. 6. Desactivando una Restriccin Puede desactivar una restriccin sin borrarla, usando la sentencia ALTER TABLE con la clusula DISABLE. Sintaxis:
7. Activando una Restriccin Puede activar una restriccin sin borrarla, usando la sentencia ALTER TABLE con la clusula DISABLE. Sintaxis:
8. Visualizar Restricciones Tras crear una tabla, puede verificar su existencia haciendo uso del comando DESCRIBE. La nica restriccin que no puede verificar es NOT NULL. Para ver todas las restricciones sobre una tabla, consulte la tabla del d.d. USER_CONSTRAINTS. Nota: Las restricciones que no reciben un nombre explcitamente por el propietario de la tabla, reciben un nombre asignado por el sistema. En la columna constraint type C es CHECK P es PRIMARYKEY, R es Integridad Referencial, U es UNIQUE KEY. Observe que la restriccin NULL, realmente es una restriccin CHECK. Puede ver los nombres de las columnas involucradas en restricciones, consultando la vista del diccionario de datos USER_CONS_COLUMNS. Esta vista, es especialmente til para restricciones, a las que el propio sistema ha asignado un nombre.