我們可以在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
怎樣才能在這些情況下,讀出的主鍵值?
非常感謝您的時間。
你的主鍵索引基於在表的主鍵列如同所有constraints。
您可以選擇主鍵COLUMN,但INDEX是數據庫中的一個獨立對象,本身不能被選中(您不會想要)。在你的情況下,主鍵約束本身可能會強化主鍵列的唯一性,並通過使用索引來減少搜索時間。
我認爲你的術語可能會有些困惑。
查詢的user_ind_columns
字典視圖找到該指數是基於主鍵字段時,如果你不確定:
SELECT *
FROM user_ind_columns
WHERE index_name = 'MY_TABLE_PK';
然後底層COLUMN(S)(可能有不止一個)添加到您的選擇查詢使其返回。
希望它有幫助...
我假設MY_TABLE的主鍵是MY_TABLE_PK。如果是這樣,您發佈的查詢從不讀取該列。試着改變你的查詢
SELECT MY_TABLE_PK, DATA_1
FROM MY_TABLE
WHERE MY_TABLE_PK = 10
這是假設有地方MY_TABLE_PK包含10
分享和享受一行。
主鍵是一個普通的列,是的,你可以選擇或使用where子句中的列。
在你SQL中,你正在選擇DATA_1兩次 - 表中有一列名爲MY_TABLE_PK?
提供給主鍵的名稱顯示在解釋計劃中,但您選擇的數據將是列名稱,而不是主鍵名稱。
例如
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;
你的問題是什麼?定義「不起作用」 – Ollie 2012-08-09 13:28:40
然後,MY_TABLE_PK可能是您的主鍵INDEX的名稱,而不是您的主鍵列COLUMN的名稱。您只能在查詢中選擇列,而不是索引自己。發佈您的表結構(或索引創建語句)以獲取更多幫助。 – Ollie 2012-08-09 13:42:31