こんにちは私は自分のテーブルの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を参照しています。したがって、テーブルを削除しようとすると、期待していたときにエラーメッセージが表示されます。
select dbms_mview.get_ddl('TABLE',USER,'TEAMS') from dual;
これを試して:
SELECT constraint_name,
constraint_type,
search_condition
FROM USER_CONSTRAINTS
WHERE table_name = 'TEAMS';
作成時に二重引用符で囲まれていない限り、Oracleのすべてのオブジェクト名は大文字です。
私は個人的に使用します:
SELECT * FROM all_constraints WHERE Table_Name = <TableName>;
次のコードを使用します。
show create table table_name;
CamelCase名を使用する場合は、テーブル作成スクリプトは次のようになっている必要があります。
Create table "Teams" (
"TeamID" varCHAR2(4) constraint "Teams_TeamID_PK" Primary Key,
"TeamName" VARCHAR2(40)
);
二重引用符を使用しない場合、Oracleはすべての識別子を大文字に変換します:)
テーブル名をwhere
句に大文字で一重引用符で囲んで入力します。
例えばWHERE table_name = 'TEAMS';