2014-02-21 120 views
0

我正在嘗試創建一個複合外鍵密鑰MySQL但是,這兩個字段都引用了另一個表中的同一列。我不確定這是否是因爲sql沒有執行的準確方法。下的SQL語句MySql複合外鍵提示同一列

SQL

ALTER TABLE tableA ADD CONSTRAINT `comp_fk` 
    FOREIGN KEY (`a_id` , `b_id`) 
    REFERENCES `tabelB` (`p_id` , `p_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION; 

錯誤

MySQL Database Error: Can't create table 'sep.#sql-984_8' (errno: 150) 
+1

這不是對列'試試這個a_id,b_id'引用_pir_的'p_ id',但相反,它們分別引用'p_id'。你需要_two_'FOREIGN KEY'約束,而不是複合約束。 –

回答

1

通過單獨使用約束

ALTER TABLE `comp_fk` 
    ADD CONSTRAINT `test` FOREIGN KEY (`a_id`) REFERENCES `tabelB`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION, 
    ADD CONSTRAINT `test2` FOREIGN KEY (`b_id`) REFERENCES `tabelB`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION