SQL - 用于链接两个表的CONSTRAINT

时间:2014-09-07 19:20:16

标签: mysql sql

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

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”行应该阅读才能正确吗?

3 个答案:

答案 0 :(得分:1)

看起来你非常接近。试试这个:

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

答案 1 :(得分: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`)
);

外键(status_id =>表格中的字段将参考itemStatusid

约束不能有","当它是最后一个:
(...)参考itemStatusid

所以结构应该是:

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

答案 2 :(得分:1)

您的约束是链接两个主键(表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`)
  );