[SGBD] Añadir o quitar restricciones de una tabla

Bases de datos

Como ya vimos en un capítulo anterior, es posible que nuestras tablas creadas tengan una serie de restricciones que contribuyan a una mejor definición de los datos que puede llegar a contener. Pero es posible que a la hora de crear dichas tablas, no hayamos contemplado todas las opciones necesarias y necesitemos añadir o quitar restricciones.

Añadir restricciones

Hay dos formas de hacerlo: la rápida y la correcta. Vamos a explicar ambas para que tengamos claras las dos opciones. La manera rápida y sencilla es mediante la cláusula MODIFY, vista anteriormente. Su sintaxis es:

ALTER TABLE NombreTabla MODIFY (NombreColumna Restricción(es))

Por ejemplo: supongamos que creamos la tabla PRUEBA con la siguiente estructura.

Ahora, podríamos añadir una serie de restricciones con la cláusula MODIFY de la siguiente manera:

¡Ojo! Con la cláusula MODIFY solo podemos añadir restricciones. Únicamente podemos eliminar la restricción NOT NULL de la siguiente manera:

La forma elaborada y correcta de añadir restricciones a una tabla es utilizar la orden ALTER de la siguiente manera:

ALTER TABLE NombreTabla ADD CONSTRAINT NombreRestricción <Descripción_restricción>

Por ejemplo:

Observamos que estamos añadiendo una restricción de clave primaria, sobre el campo uno, con el nombre de restricción pk_uno (es decir, primary key sobre uno).

Esta forma se debe utilizar para las restricciones UNIQUE, PRIMARY KEY, FOREIGN KEY y CHECK. Nunca debe usarse para NOT NULL o DEFAULT (para estos casos, debe utilizar ALTER TABLE con MODIFY).

Quitar restricciones

Para quitar restricciones de una tabla, usaremos la orden ALTER TABLE de la siguiente manera:

ALTER TABLE NombreTabla DROP CONSTRAINT NombreRestricción

Una cosa a tener en cuenta y que suele ser un fallo lógico a la hora de eliminar restricciones es que posiblemente dicha restricción la hayamos creado con MODIFY, por lo que no tiene un nombre de restricción creado. Oracle, por defecto, le asigna a cada restricción un nombre de sistema con la siguiente forma: SYS_C00n. ¿Cómo podemos averiguar entonces el nombre? Tendremos que ejecutar una consulta al diccionario de datos con la orden SELECT, la cual aún no hemos explicado, pero que dejamos constancia para dejar explicada esta parte. La consulta sería:

Cuando Oracle nos muestre el resultado, apuntaremos el nombre de dicha restricción para así poder eliminarla de la siguiente manera:

28 años | Entrenador de fútbol | Informático&Web Design | Linuxero | Componente de @chirigotaninos | Creador de http://todobytes.es & http://sudosu.es | Apasionado de la historia

Facebook Twitter Google+ YouTube 

Related posts

One Thought to “[SGBD] Añadir o quitar restricciones de una tabla”

  1. Muy importente entonces: cuando usamos la ṕalabra clave CONSTRAINT implícitamente estamos documentando nuestra estructura de datos para los futuros administradores, diseñadores y programadores (y hasta los usuarios cuando “salte” algún mensaje de error); muy buena información.

Leave a Comment