2014-02-21 122 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