2009-12-03 24 views
9

Hola Estoy intentando mostrar las restricciones en una de mis tablas, pero por alguna razón no aparece el mensaje seleccionado. A continuación se muestra la tabla que he creado.Mostrar las restricciones en una tabla

Create table Teams (
    TeamID varCHAR2(4) constraint Teams_TeamID_PK Primary Key, 
    TeamName VARCHAR2(40) 
); 

Este es el código que estoy usando para mostrar mis limitaciones.

SELECT constraint_name, 
     constraint_type, 
     search_condition 
    FROM USER_CONSTRAINTS 
WHERE table_name = 'Teams'; 

Soy un novato, así que quiero asegurarme de que entiendo lo que está mal. Intenté abandonar la tabla pensando que mis limitaciones no tomaban - no lo hice, ni recibí ningún error cuando creé la tabla y estoy haciendo referencia a TeamID en otra tabla. Entonces, cuando trato de dejar caer la tabla, aparece un mensaje de error cuando es lo que esperaba.

+0

Su problema me parece que está realizando estas acciones como usuarios diferentes y/o no están comprometiendo la transacción cuando crea la tabla. –

+0

CREATE TABLE es DDL que se confirma automáticamente al ejecutarse en Oracle. – DCookie

+0

No puede colocar una tabla a la que hagan referencia otras tablas, a menos que especifique "RESTRICCIONES DE CASCADE", es decir, "LIMPIEZA DE EQUIPOS DE CASCADE Teams" –

Respuesta

1
select dbms_mview.get_ddl('TABLE',USER,'TEAMS') from dual; 
18

Prueba esto:

SELECT constraint_name, 
     constraint_type, 
     search_condition 
    FROM USER_CONSTRAINTS 
WHERE table_name = 'TEAMS'; 

A menos entre comillas dobles cuando se creó, todos los nombres de objeto en Oracle son mayúsculas.

+0

¡Funciona! amazing ... –

1

Si prefiere los nombres CamelCase, la secuencia de comandos create table debería haber sido:

Create table "Teams" ( 
    "TeamID" varCHAR2(4) constraint "Teams_TeamID_PK" Primary Key, 
    "TeamName" VARCHAR2(40) 
); 

Sin doble cita a Oracle convierte amablemente todos los identificadores en mayúsculas :)

1

Utilice el siguiente código :

show create table table_name; 
+0

Funcionará en MySQL pero no en MS SQL Server y Oracle. –

2

yo personalmente uso:

SELECT * FROM all_constraints WHERE Table_Name = <TableName>; 
0

Escriba el nombre de la tabla en mayúscula en where cláusula dentro de las comillas simples.

p. Ej. WHERE table_name = 'TEAMS';

+1

Las palabras clave SQL son insensibles a las mayúsculas y minúsculas: http://stackoverflow.com/questions/153944/is-sql-syntax-case-sensitive –

Cuestiones relacionadas