SQL> create table Drugs (
2 DrugNumber smallint primary key,
3 DrugMarketName varchar(40),
4 DrugGenericName varchar(40),
5 PackSize smallint,
6 UnitCost numeric(7,2),
7 foreign key (DrugSupplierNumber) references Drug_Suppliers (DrugSupplierNumber));
foreign key (DrugSupplierNumber) references Drug_Suppliers (DrugSupplierNumber)
)
*
ERROR at line 7:
ORA-00904: "DRUGSUPPLIERNUMBER": invalid identifier
1
A
回答
3
Oracle抱怨(正確)您的表定義中沒有列DrugSupplierNumber。 要麼擺脫「外鍵」,要麼創建一個正常的列DrugSupplierNumber並在之後添加約束;例如對於V1:
create table Drugs (
DrugNumber smallint primary key,
DrugMarketName varchar(40),
DrugGenericName varchar(40),
PackSize smallint,
UnitCost numeric(7,2),
DrugSupplierNumber references Drug_Suppliers (DrugSupplierNumber)
);
2
您正試圖創建涉及一列DrugSupplierNumber
不是表的一部分外鍵約束。您不希望在此表上創建外鍵,或者您想要向此表中添加DrugSupplierNumber
列,或者您想在約束中引用此表中的其他列之一。我的猜測是,你忘了將DrugSupplierNumber
列添加到表定義。
雖然它在語法上是有效的,但在Oracle表中聲明列爲smallint
的行爲不太可能正在做你想做的事情。這是NUMBER(38)
的別名,因此如果您來自非Oracle數據庫,它不會提供任何(合理的)上限,就像您期望的那樣。
SQL> create table foo(col1 smallint);
Table created.
SQL> desc foo
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 NUMBER(38)
此外,在Oracle,這將是更加常規的申報字符串列作爲VARCHAR2
而非VARCHAR
和作爲NUMBER(7,2)
而非NUMERIC(7,2)
申報UnitCost
柱。
相關問題
- 1. 代碼輸出不正確
- 2. 代碼不正確排序
- 3. 碼生成不正確的HTML代碼
- 4. jQuery代碼正確
- 5. 從.Net代碼訪問Oracle DB後正確清理
- 6. 不正確的HTTP狀態代碼
- 7. 不正確的結果在C代碼
- 8. 批量嵌套代碼不正確?
- 9. 代碼找不到正確的方差
- 10. findPattern()Python代碼...不正確執行?
- 11. 計數器代碼不正確計數
- 12. Gitorious源代碼路由不正確
- 13. 代碼不能正確顯示輸出
- 14. 該代碼不會重新正確
- 15. HTML代碼不能正確呈現
- 16. 正確的代碼不會編譯?
- 17. ANTLR4生成不正確的java代碼
- 18. $ wp_query代碼顯示不正確
- 19. 圍欄代碼塊不突出正確
- 20. Html顏色代碼顯示不正確?
- 21. VBA - 不正確的圖形代碼
- 22. Javascript代碼不計日期正確
- 23. Wordpress格式代碼不正確
- 24. C++代碼不正確編譯
- 25. PHPEclipse代碼模板不正確縮進
- 26. Specflow生成的代碼不正確?
- 27. 總下載代碼不正確
- 28. VB.Net正確的代碼不起作用?
- 29. Python代碼輸出顯示不正確
- 30. Sylius語言環境代碼不正確
我沒有看到毒品表格定義中的DrugSupplierNumber列。 Oracle同意我的觀點 - 添加一個。 – duffymo 2012-07-06 18:47:43