2016-02-27 27 views
2

我想創建一個遞歸列的表,但它不起作用。後來我嘗試了它,它確實有效,但是由於問題我丟掉了桌子,現在我不知道我做了什麼。 表的名稱是「安全」,這是該腳本:遞歸表

create table security (
id_emplo int(6) ZEROFILL NOT NULL, 
id_boss varchar(10) DEFAULT NULL, 
TIP int(5) NOT NULL, 
security_division varchar(40), 
PRIMARY KEY (id_emplo), 
FOREIGN KEY (id_emplo) REFERENCES employees (id_emple) ON DELETE RESTRICT ON UPDATE CASCADE, 
FOREIGN KEY (id_boss) REFERENCES security (id_emple) ON DELETE RESTRICT ON UPDATE CASCADE 
) ENGINE=INNODB; 

我有另一個表稱爲「僱員」。如果我嘗試只用「id_emplo」REFERENCES employess創建表...它沒有任何問題。

+0

對不起,這是一個錯誤,因爲我在寫代碼的時候改了名字,但是我在mysql中寫得很好。 – ilos28

回答

0

你必須非常小心類型和聲明。以下應該工作:

create table security (
    id_emplo int(6) ZEROFILL NOT NULL, 
    id_boss int(6) ZEROFILL DEFAULT NULL, 
    TIP int(5) NOT NULL, 
    security_division varchar(40), 
    PRIMARY KEY (id_emplo), 
    FOREIGN KEY (id_emplo) REFERENCES employees (id_emple) ON DELETE RESTRICT ON UPDATE CASCADE, 
    FOREIGN KEY (id_boss) REFERENCES security (id_emplo) ON DELETE RESTRICT ON UPDATE CASCADE 
); 

Here是SQL小提琴。

你有兩個主要問題:

  1. 您有不正確的列的名稱。它應該是id_emplo而不是id_emple(儘管我給外鍵列與它們引用的列的名稱相同)。
  2. 這些類型是不兼容的。
+0

Yess ...就是這樣。由於類型,它不起作用。我在mysql中寫得很好,但是因爲我在這裏寫了它而不是粘貼它,所以列名(id_emple)=(id_emplo)的名稱出錯了。非常感謝。 – ilos28