web-dev-qa-db-ja.com

テーブルに制約を表示する

こんにちは私は自分のテーブルの1つに制約を表示しようとしていますが、何らかの理由で行が選択されていませんというメッセージが表示されます。以下に、私が作成したテーブルを示します。

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を参照しています。したがって、テーブルを削除しようとすると、期待していたときにエラーメッセージが表示されます。

11
Michael
select dbms_mview.get_ddl('TABLE',USER,'TEAMS') from dual;
1
Jeff Hunter

これを試して:

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

作成時に二重引用符で囲まれていない限り、Oracleのすべてのオブジェクト名は大文字です。

21
DCookie

私は個人的に使用します:

SELECT * FROM all_constraints WHERE Table_Name = <TableName>;
5
Tenzin

次のコードを使用します。

show create table table_name;
3
user3444871

CamelCase名を使用する場合は、テーブル作成スクリプトは次のようになっている必要があります。

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

二重引用符を使用しない場合、Oracleはすべての識別子を大文字に変換します:)

1
Jeffrey Kemp

テーブル名をwhere句に大文字で一重引用符で囲んで入力します。

例えばWHERE table_name = 'TEAMS';

0
Rahul Kharche