2012-11-29 103 views
-1

我創建3子表的時候,其他2完成並正常工作,但我得到這個錯誤(1064),當我進入最後表下面的代碼:SQL:錯誤1064創建表

mysql> CREATE TABLE foreign (
    -> account_no VARCHAR(16) NOT NULL, 
    -> foreign_id VARCHAR(16) NOT NULL, 
    -> TYPE CHAR(4) DEFAULT 'FORE' NOT NULL 
    -> CHECK (TYPE = 'FORE'), 
    -> currency_TYPE CHAR(3) NOT NULL 
    -> CHECK (currency_TYPE IN ('EUR','USD','HKD')), 
    -> balance DECIMAL(16,2), 
    -> PRIMARY KEY(account_no, foreign_id), 
    -> FOREIGN KEY(account_no, TYPE) 
    -> ON UPDATE CASCADE 
    -> ON DELETE CASCADE); 

錯誤消息告訴我,foreign(account_no VARCHAR(16) NOT NULL, foreign_id VARCHAR(16) NOT NULL, TYPE得到錯誤的語法,但我找不到它,有什麼問題嗎?

回答

0

外鍵(account_no上,TYPE),你需要給參考列

CREATE TABLE parent (id INT NOT NULL, 
       PRIMARY KEY (id) 
) 
CREATE TABLE child (id INT, parent_id INT, 
       INDEX par_ind (parent_id), 
       FOREIGN KEY (parent_id) REFERENCES parent(id) 
        ON DELETE CASCADE 
    ) 
+0

它作品,謝謝 –

0

FOREIGN是一個MySQL保留字。

重命名該表,或使用反引號`引用這個名字 -

CREATE TABLE `foreign` (...