2013-05-07 62 views
0

創建表我有這些表,但只有成功地創造不能在MySQL

  1. Insurance_Policy_Type
  2. Historical_Era
  3. 地區
  4. 參考
  5. 組織
  6. Geographic_Area

他們其餘的給我錯誤如,

"Cant create table" on Loan_Item, 
"Reference_Id dont exist" on Historical_Era_Reference 
"error 1064 (4200)" on Loan 

CREATE TABLE Insurance_Policy_Type (
Insurance_Policy_Type_Id INT (4), 
Insurance_Policy_Type_Name VARCHAR (30), 
PRIMARY KEY (Insurance_Policy_Type_Id)); 


CREATE TABLE Historical_Era (
Historical_Era_Id INT (4), 
Historical_Era_Name VARCHAR (30), 
PRIMARY KEY (Historical_Era_Id)); 


CREATE TABLE Reference (
Reference_Id INT (4), 
Reference_Name VARCHAR (30), 
Author VARCHAR (30), 
PRIMARY KEY (Reference_Id)); 


CREATE TABLE Region (
Region_Id INT (4), 
Region_Name VARCHAR (30), 
PRIMARY KEY (Region_Id)); 

CREATE TABLE Organisation (
Organisation_Id INT (4), 
Organisation_Name VARCHAR (30), 
PRIMARY KEY (Organisation_Id)); 

CREATE TABLE Items (
Item_Id INT (4), 
Item_Name VARCHAR (30), 
Description VARCHAR (30), 
Insurance_Policy_Type_Id INT (4), 
Geo_Area_Id INT (4) 
PRIMARY KEY (Item_Id), 
FOREIGN KEY (Insurance_Policy_Type_Id) REFERENCES Insurance_Policy_Type(Insurance_Policy_Type_Id), 
FOREIGN KEY (Geo_Area_Id) REFERENCES Geographic_Area(Geo_Area_Id)); 

CREATE TABLE GeoArea_HistEra (
Geo_Area_Id INT (4), 
Historical_Era_Id INT (4), 
FOREIGN KEY (Geo_Area_Id) REFERENCES Geographical_Area(Geo_Area_Id)), 
FOREIGN KEY (Historical_Era_Id) REFERENCES Historical_Era(Historical_Era_Id)); 

CREATE TABLE Historical_Era_Reference (
References_Id INT (4), 
Historical_Era_Id INT (4), 
FOREIGN KEY (Reference_Id) REFERENCES Reference (Reference_Id), 
FOREIGN KEY (Historical_Era_Id) REFERENCES Historical_Era (Historical_Era_Id)); 


CREATE TABLE Loan_Item (
Item_Id INT (4), 
Loan_Id INT (4), 
FOREIGN KEY (Item_Id) REFERENCES Items(Item_Id), 
FOREIGN KEY (Loan_Id) REFERENCES Loan(Loan_Id)); 

CREATE TABLE Geographic_Area (
Geo_Area_Id INT (4), 
Geo_Area_Name VARCHAR (30), 
Region_Id INT (4), 
PRIMARY KEY (Geo_Area_Id), 
FOREIGN KEY (Region_Id) REFERENCES Region (Region_Id)); 

CREATE TABLE Loan (
Loan_Id INT (4), 
Item_Id INT (4) 
Organisation_Id INT(4) 
Loan_Start DAY, 
Loan_End DAY 
FOREIGN KEY (Organisation_Id) REFERENCES Organisation (Organisation_Id), 
FOREIGN KEY (Item_Id) REFERENCES Items (Item_Id)); 
+0

你會得到什麼錯誤信息? – 2013-05-07 08:22:07

+0

1用外鍵創建表。 一旦你創建了表,改變了添加外鍵的表。 – Ajit 2013-05-07 08:26:33

+0

首先在sql上面有錯字。您在Geo_Area_Id後面的Items表中錯過了一個「,」這就是爲什麼它會向您顯示這樣的錯誤,而其他人則說您可以嘗試手動添加約束並確保使用InnoDB引擎。 – ankurtr 2013-05-07 08:39:32

回答

2

先試後創建表,並添加外鍵。

+1

*投票結果*,以便您可以將反應置於其他情況下。歡迎來到SO。 – Rob 2013-05-07 08:28:01

+0

嗨,大家好,謝謝大家的貢獻,他們真的很有幫助。你甚至睜開眼睛專心。我遇到的大多數錯誤都是因爲錯別字,缺少「,」,有額外的「)」而沒有聲明主鍵。我跳這也將有助於某人。 〜謝謝 – user2357469 2013-05-07 13:12:17

+0

@ user2357469你可以編輯你的答案,粘貼你想出的最終正確的代碼。另外,如果我的建議對你有幫助,請接受我的回答。 – 2013-05-13 08:30:47

0

上面的查詢有很多問題。

  1. 您正在爲一個表,該表尚不存在一個參考:"FOREIGN KEY (Geo_Area_Id) REFERENCES Geographic_Area(Geo_Area_Id));"首先創建表,然後更新外鍵。

  2. 有很多語法錯誤 - 缺少逗號和雙括號。我建議學習如何發現它們,而不是一一指出它們,例如我建議使用IDE。我親自在MySQL Workbench中測試語句。

  3. 由於多種原因,查詢可能會產生錯誤150。請查看有關主鍵典型錯誤的非常好的摘要,如FK in the first answer here