【问题标题】:SQL - CONSTRAINT to link two tablesSQL - CONSTRAINT 链接两个表
【发布时间】:2014-11-01 01:26:46
【问题描述】:

我不明白如何将两个表链接在一起。这是一个例子:

CREATE TABLE IF NOT EXISTS itemStatus (
  id int(11) AUTO_INCREMENT PRIMARY KEY,
  name varchar(64) NOT NULL UNIQUE KEY
);

CREATE TABLE IF NOT EXISTS itemData (
  id int(11) AUTO_INCREMENT PRIMARY KEY,
  title varchar(64) NOT NULL,
  status_id int(11) DEFAULT NULL,
  CONSTRAINT `fk_id` FOREIGN KEY (`id`) REFERENCES `itemStatus` (`id`),
  );

我正在调用“status_id”行,但我没有在任何地方引用它,因此它无法将两者联系起来。对于这个例子,我的“CONSTRAINT”行是否应该读取才能正确?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    A FOREIGN KEY in one table points to a PRIMARY KEY in another table.
    

    看看: http://www.w3schools.com/sql/sql_foreignkey.asp

    应该是这样的:

    CREATE TABLE IF NOT EXISTS itemStatus (
      id int(11) AUTO_INCREMENT PRIMARY KEY,
      name varchar(64) NOT NULL UNIQUE KEY
    );
    
    CREATE TABLE IF NOT EXISTS itemData (
      id int(11) AUTO_INCREMENT PRIMARY KEY,
      title varchar(64) NOT NULL,
      status_id int(11) DEFAULT NULL,
      CONSTRAINT `fk_id` FOREIGN KEY (`status_id`) REFERENCES `itemStatus` (`id`)
    );
    

    FOREIGN KEY (status_id) => 表中的字段将REFERENCES itemStatus (id)

    最后一个约束不能有“,”:
    (...) 参考 itemStatus (id),

    所以结构应该是:

    CONSTRAINT <<CONSTRAINT_NAME>> FOREIGN KEY (<<COLUMN_IN_THE_TABLE>>) REFERENCES `<<ANOTHER_TABLE>>` (`<<ANOTHER_TABLE_COLUMN_ID>>`)
    

    【讨论】:

    【解决方案2】:

    看起来你很接近。试试这个:

    CONSTRAINT `fk_id` FOREIGN KEY (`status_id`) REFERENCES `itemStatus` (`id`)
    

    【讨论】:

      【解决方案3】:

      您的约束是链接两个主键(表 1 的 id 与表 2 的 id)。 应该是这样的:

      CREATE TABLE IF NOT EXISTS itemData (
        id int(11) AUTO_INCREMENT PRIMARY KEY,
        title varchar(64) NOT NULL,
        status_id int(11) DEFAULT NULL,
        CONSTRAINT `fk_id` FOREIGN KEY (`status_id`) REFERENCES `itemStatus` (`id`)
        );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多