Oracle で主キーを「通常の列」として使用できますか? 次のクエリを実行しようとしていますが、機能しません。
SELECT DATA_1,DATA_2 FROM MY_TABLE WHERE MY_TABLE_PK=10;
無効な識別子エラーがあります:
SQL Error: ORA-00904: "MY_TABLE_PK": invalid identifier
これらの場合、主キーの値をどのように読み取ることができますか?
お時間をいただきありがとうございます。
Oracle で主キーを「通常の列」として使用できますか? 次のクエリを実行しようとしていますが、機能しません。
SELECT DATA_1,DATA_2 FROM MY_TABLE WHERE MY_TABLE_PK=10;
無効な識別子エラーがあります:
SQL Error: ORA-00904: "MY_TABLE_PK": invalid identifier
これらの場合、主キーの値をどのように読み取ることができますか?
お時間をいただきありがとうございます。
主キー INDEX は、すべての制約と同様に、テーブルの主キー COLUMN に基づいています。
主キーの COLUMN を選択できますが、INDEX はデータベース内の別のオブジェクトであり、それ自体を選択することはできません (とにかくしたくないでしょう)。あなたの場合、主キー制約自体が主キー列の一意性を強化し、インデックスを使用して検索時間を短縮している可能性があります。
用語で少し混乱している可能性があると思います。
user_ind_columns
不明な場合は、ディクショナリ ビューにクエリを実行して、インデックスの基になる主キー列を見つけます。
SELECT *
FROM user_ind_columns
WHERE index_name = 'MY_TABLE_PK';
次に、基になる COLUMN(S) (複数ある場合があります) を選択クエリに追加して、それを返します。
それが役に立てば幸い...
主キーは通常の列であり、はい、where 句で列を選択または使用できます。
SQL では、DATA_1 を 2 回選択しています。テーブルに MY_TABLE_PK という列がありますか?
主キーに付けられた名前は Explain Plan に表示されますが、選択したデータは主キー名ではなく列名になります。
例えば
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
ここでの主キーはsupplier_pkと呼ばれ、列supplied_idを使用しているため、このような選択を行うことができます
SELECT supplier_name from supplier where supplier_id=1234;
MY_TABLE の主キーは MY_TABLE_PK であると想定しています。その場合、投稿したクエリはその列を読み取ることはありません。クエリを次のように変更してみてください
SELECT MY_TABLE_PK, DATA_1
FROM MY_TABLE
WHERE MY_TABLE_PK = 10
これは、MY_TABLE_PK に 10 が含まれる行があることを前提としています。
共有してお楽しみください。