【问题标题】:Table with two foreign key constraints具有两个外键约束的表
【发布时间】:2019-06-30 18:53:21
【问题描述】:

当我尝试创建一个包含 2 个外键的表时,我收到了 ERROR 1064 (42000)。它说我的语法错误,但我找不到任何错误。 我正在使用 MySQL 8.0 版

我只尝试了一个约束/没有第二个约束并且它有效。但是对于他们两个,我都会遇到错误。

这行得通:

CREATE TABLE IF NOT EXISTS Comment (
  id INT NOT NULL AUTO_INCREMENT,
  content VARCHAR(15) NOT NULL,
  date_posted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  user_id INT NOT NULL,
  post_id INT NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT `fk_User_Comment`
    FOREIGN KEY (user_id)
    REFERENCES User (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

这不是:

CREATE TABLE IF NOT EXISTS Comment (
  id INT NOT NULL AUTO_INCREMENT,
  content VARCHAR(15) NOT NULL,
  date_posted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  user_id INT NOT NULL,
  post_id INT NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT `fk_User_Comment`
    FOREIGN KEY (user_id)
    REFERENCES User (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION),
  CONSTRAINT `fk_Post_Comment`
    FOREIGN KEY (post_id)
    REFERENCES Post (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

【问题讨论】:

  • 完整的错误信息是什么?
  • In CONSTRAINT fk_User_Comment` 外键 (user_id) 参考用户 (id) ON DELETE NO ACTION ON UPDATE NO ACTION),` 是您实际代码中的最后一个括号吗?
  • 就像@forpas 所说的正确语法之一是this
  • 你是对的。谢谢!

标签: mysql mysql-8.0


【解决方案1】:

是的,我多了一个括号。 谢谢各位。

CREATE TABLE IF NOT EXISTS Comment (
  id INT NOT NULL AUTO_INCREMENT,
  content VARCHAR(15) NOT NULL,
  date_posted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  user_id INT NOT NULL,
  post_id INT NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT `fk_User_Comment`
    FOREIGN KEY (user_id)
    REFERENCES User (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Post_Comment`
    FOREIGN KEY (post_id)
    REFERENCES Post (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多