2017-02-13 98 views
0

我是SQL新手,我做了一切理解,但我無法創建表。說錯誤1005不能創建表user.EMPLOYEEuser.STORE(錯誤150)幫助錯誤1005不能創建表user.EMPLOYEE和user.STORE(errno 150)

DROP TABLE IF EXISTS EMPLOYEE, STORE, REGION; 

CREATE TABLE REGION (

    REGION_CODE int NOT NULL AUTO_INCREMENT, 
    REGION_DESCRIPT varchar(20), 
    PRIMARY KEY (REGION_CODE) 
)Engine=InnoDB; 

CREATE TABLE EMPLOYEE (

     EMP_CODE int NOT NULL AUTO_INCREMENT, 
     EMP_TITLE varchar(4), 
     EMP_LNAME varchar(15), 
     EMP_FNAME varchar(15), 
     EMP_INITIAL varchar(1), 
     EMP_DOB date, 
     STR_CODE int NOT NULL , 
     PRIMARY KEY (EMP_CODE,STR_CODE), 
     FOREIGN key (STR_CODE) REFERENCES STORE(STORE_CODE) 

) Engine=InnoDB; 


CREATE TABLE STORE (

     STORE_CODE int NOT NULL AUTO_INCREMENT, 
     STORE_NAME varchar(20), 
     STORE_YRD_SALES numeric, 
     REGION_CODE int, 
     EMP_CODE int NOT NULL, 
     PRIMARY KEY (STORE_CODE), 
     FOREIGN KEY (REGION_CODE) REFERENCES REGION(REGION_CODE), 
     FOREIGN KEY (EMP_CODE) REFERENCES EMPLOYEE(EMP_CODE) 
) Engine=InnoDB; 
+1

您可以嘗試移動你的'國外key'了創建語句的,因爲你可以看到,'employee'表引用到'store'表,但'store'表在那個時候還不存在。 – Prisoner

+0

如果這些表要彼此鏈接並且可能會在它們引用的表之後創建,則可能需要在運行create語句之前禁用外鍵檢查。不要忘記之後重新啓用它們。 – gabe3886

回答

0

錯誤150,如果這是你在創建表的順序,可能是由事實上,你導致了無效鍵約束不能在employee中爲當前不存在的store添加約束。

不能夠創造store是簡單的問題,因爲employee的一個副作用是不會創建。一旦你解決了防止這個問題,store的外鍵約束應該沒問題。


最簡單的解決方案可能是創建employee沒有約束,然後將其添加在後來一次store存在。這將是這樣的(注意:在EMPLOYEE表創建缺少的約束):

CREATE TABLE EMPLOYEE (
    EMP_CODE  int   NOT NULL AUTO_INCREMENT, 
    EMP_TITLE  varchar(4), 
    EMP_LNAME  varchar(15), 
    EMP_FNAME  varchar(15), 
    EMP_INITIAL varchar(1), 
    EMP_DOB  date, 
    STR_CODE  int   NOT NULL, 
    PRIMARY KEY (EMP_CODE,STR_CODE) 
); 

CREATE TABLE STORE (<<no change here>>); 

ALTER TABLE EMPLOYEE ADD CONSTRAINT EMP2STORE 
    FOREIGN KEY (STR_CODE) REFERENCES STORE(STORE_CODE); 
+0

在沒有外鍵引用Employee的情況下創建存儲。 創建員工。 將外鍵添加到Store。 – user2260040

+0

@ user2260040,這與我建議的方式(創建沒有外鍵的員工,創建商店,爲員工添加外鍵)有何根本不同(或更好)?兩者都將與雙向約束一起工作,但是我的優勢在於(無可否認),您無需更改現有創建語句的順序:-) – paxdiablo

相關問題