2009-12-03 2 views
9

Здравствуйте, я пытаюсь отобразить ограничения в одной из моих таблиц, но по какой-то причине я получаю сообщение, которое не выбрано ни одной строки. Ниже представлена ​​таблица, которую я создал.Отображение ограничений в таблице

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

Это код, который я использую, чтобы показать свои ограничения.

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

Я новичок, поэтому я хочу убедиться, что я понимаю, что не так. Я попытался отказаться от таблицы, считая, что мои ограничения не были приняты - я этого не сделал, и не получал никаких ошибок при создании таблицы, и я ссылаюсь на TeamID в другой таблице. Поэтому, когда я пытаюсь удалить таблицу, я получаю сообщение об ошибке, когда это то, на что я надеялся.

+0

Ваша проблема поражает меня тем, что вы выполняете эти действия как разные пользователи и/или не совершаете транзакцию при создании таблицы. –

+0

CREATE TABLE - это DDL, который автоматически совершает выполнение в Oracle. – DCookie

+0

Вы не можете отбросить таблицу, на которую ссылаются другие таблицы, если вы не укажете «CASCADE CONSTRAINTS», то есть «DROP TABLE Команды CASCADE CONSTRAINTS» –

ответ

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

Попробуйте это:

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

Если двойные кавычки при создании, все имена объектов в Oracle не в верхнем регистре.

+0

Работает! Удивительно ... –

1

Если вы предпочитаете имена CamelCase, ваш создать таблицу сценарий должен быть:

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

без двойных кавычек Oracle услужливо преобразует все идентификаторы в верхнем регистре :)

1

Используйте следующий код :

show create table table_name; 
+0

Будет работать в MySQL, но не в MS SQL Server и Oracle. –

2

Я лично использую:

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

Введите название таблицы в верхнем регистре в пункте where в одинарных кавычках.

например. WHERE table_name = 'TEAMS';

+1

Ключевые слова SQL не зависят от регистра: http://stackoverflow.com/questions/153944/is-sql-syntax-case-sensitive –

Смежные вопросы