2012-08-09 19 views
77

He definido un nombre para cada una de las restricciones para las tablas múltiples que he creado en Oracle SQL.Mostrar los nombres de todas las restricciones para una tabla en Oracle SQL

El problema es que para eliminar una restricción para la columna de una tabla en particular, necesito saber el nombre que he proporcionado para cada restricción, que he olvidado.

¿Cómo puedo enumerar todos los nombres de restricciones que he especificado para cada columna de una tabla?

¿Hay alguna instrucción SQL para hacerlo?

Respuesta

108

Es necesario consultar la data dictionary, específicamente la vista USER_CONS_COLUMNS para ver las columnas de las tablas y las limitaciones correspondientes:

SELECT * 
    FROM user_cons_columns 
WHERE table_name = '<your table name>'; 

su información, a menos que creó específicamente a su mesa con un nombre en minúsculas (utilizando comillas dobles), el nombre de la tabla aparecerá de forma predeterminada en mayúsculas, así que asegúrese de que así sea en su consulta.

Si a continuación desea ver más información sobre la restricción en sí consultar la vista USER_CONSTRAINTS:

SELECT * 
    FROM user_constraints 
WHERE table_name = '<your table name>' 
    AND constraint_name = '<your constraint name>'; 

Si la tabla se mantiene en un esquema que no es su esquema predeterminado entonces es posible que tenga que sustituir los puntos de vista con:

all_cons_columns 

y

all_constraints 

la adición a la cláusula donde:

AND owner = '<schema owner of the table>' 
+0

Typo: 'USER_CONS_COLUMNS' –

+2

es sensible a mayúsculas y minúsculas, creo; Debería estar en mayúsculas. –

10
SELECT * FROM USER_CONSTRAINTS 
+2

Esto no obtendrá el nombre de columna –

6
select constraint_name,constraint_type 
from user_constraints 
where table_name = 'YOUR TABLE NAME'; 

nota: nombre de la tabla debe ser en mayúsculas.

En caso de que no se conoce el nombre de la tabla a continuación,

select constraint_name,constraint_type,table_name 
from user_constraints; 
6

tal vez esto puede ayudar:

SELECT constraint_name, constraint_type, column_name 
from user_constraints natural join user_cons_columns 
where table_name = "my_table_name"; 

aplausos

Cuestiones relacionadas