11

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

4

6 に答える 6

23

これを試して:

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

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

于 2009-12-03T06:04:38.640 に答える
5

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

SELECT * FROM all_constraints WHERE Table_Name = <TableName>;
于 2016-11-04T08:28:58.033 に答える
3

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

show create table table_name;
于 2014-03-21T04:02:50.777 に答える
1
select dbms_mview.get_ddl('TABLE',USER,'TEAMS') from dual;
于 2009-12-03T12:31:21.873 に答える
1

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

例えばWHERE table_name = 'TEAMS';

于 2017-04-13T07:10:43.087 に答える
1

キャメルケースの名前を好む場合、テーブル作成スクリプトは次のようになります。

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

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

于 2009-12-03T09:06:21.330 に答える