为什么我不能给出外键约束?

时间:2014-05-01 08:10:41

标签: mysql

为什么我不能给出外键约束?

错误1215:无法添加外键约束

SQL语句:

CREATE TABLE `arena`.`like_history` (

  `p_id` INT(11) NOT NULL,

  `u_id` INT(11) NOT NULL,

  `ldate` DATETIME NOT NULL,

  PRIMARY KEY (`p_id`, `u_id`),

  INDEX `u_id_idx` (`u_id` ASC),

  CONSTRAINT `p_id`

    FOREIGN KEY (`p_id`)

    REFERENCES `arena`.`picture` (`p_id`)

    ON DELETE CASCADE

    ON UPDATE CASCADE,

  CONSTRAINT `u_id`

    FOREIGN KEY (`u_id`)

    REFERENCES `arena`.`user` (`ul_id`)

    ON DELETE CASCADE

    ON UPDATE CASCADE)

1 个答案:

答案 0 :(得分:0)

我不确定如何定义引用的表列。
但是为了让他们有资格从其他表中引用,他们必须 INDEXed

根据foreign key约束的文档:

  

REFERENCES tbl_name(index_col_name,...)

INDEXpicture.p_id列上定义user.ul_id

其他主要限制因素是,

  • 子列定义必须与父列的定义匹配。
  • 数据库ENGINE类型必须相同。

请参阅

  

[CONSTRAINT [symbol]] FOREIGN KEY
      [index_name](index_col_name,...)
      参考文献tbl_name(index_col_name,...)
      [ON DELETE reference_option]
      [ON UPDATE reference_option]

     

reference_option:
      限制| CASCADE | SET NULL |没有行动