2016-05-22 44 views
0

我用這個命令創建了一個oracle表: create table MyTable(Nr Integer not null,Name VARCHAR(50),CONSTRAINT PK_MyTable主鍵(Nr))表空間USERS存儲(初始4K下一個4K礦物質2最大量50 pctincrease 0);在oracle中找不到約束條件

然後我試着用這個命令得到約束: SELECT * FROM user_constraints where TABLE_NAME ='MyTable';

但是select只返回空結果?我錯了什麼?或者這可能是因爲權限不足而發生的?

感謝

+0

您是否與您的表名稱的駱駝大小寫匹配,但沒有使用帶引號的標識符創建它? (這是很好的;帶引號的標識符是一種痛苦,但對於未加引號的標識符,表/對象名稱默認爲大寫)。很難判斷您是否更改了問題的名稱。 –

回答

1

確保該表已在您使用的是執行查詢相同的架構被創建。你也可以檢查ALL_CONSTRAINTS表。 另外,默認情況下,表名僅以大寫字符保存,Oracle中的字符串比較區分大小寫。如果你做的一切都正確,這個人應該做的伎倆。

SELECT * FROM user_constraints where TABLE_NAME = UPPER('MyTable'); 
+0

這很可能是正確的答案。我從未理解的部分是使用UPPER等文字。爲什麼不在等號右邊有'MYTABLE'? – mathguy

+0

把'MYTABLE'放在一起,如果不是更好的話。我使用UPPER函數只是爲了留下最初發布的表名。 –

+0

大寫是訣竅。謝謝。 – Richard