Con modificar una constraint no nos referimos a cambiarle el tipo, condición, columnas, etc. (para ello eliminarla y volver a crearla), nos referimos a desactivar, activar u obligar UNA constraint (restricción) de UNA tabla, en una base de datos Oracle.
Utilizaremos la instrucción ALTER TABLE. Existe diferente maneras de escribirlo dependiendo el tipo de constraint (como se puede apreciar en la imagen), de un modo general como está a continuación:
- Una constraint desactivada (disabled, not validated) no realiza la comprobación para la que fue creada.
alter table nombre_tabla
disable constraint nombre_constraint;
- Una constraint activada (enabled, validated) podremos activarla si la información existente cumple la restricción. Una vez activada, toda la información debe cumplir la restricción.
alter table nombre_tabla
enable constraint nombre_constraint;
- Una constraint enforce o también conocida como obligatoria (enabled, not validated) la podemos activar aunque los datos existentes no cumplan la restricción. Pero los nuevos datos o modificaciones deben cumplir con la restricción.
alter table nombre_tablanombre_tabla es el nombre de la tabla o sinónimo (nombre alternativo de un objeto -tabla-) al cual el usuario tiene acceso. Si la tabla pertenece a un usuario distinto del nuestro, se debe especificar el nombre del propietario (propietario.nombre_tabla) además de tener el privilegio ALTER TABLE sobre ella.
enforce constraint nombre_constraint;
Otros enlaces:
—Consultar información sobre las constraints de una tabla.
—Procedimiento que se encarga de activar/desactivar todas las constraints de todas las tablas de un usuario.
—Web de Oracle sobre ALTER TABLE