我不明白如何将两个表链接在一起。这是一个例子:
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”行应该阅读才能正确吗?
答案 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
) =>表格中的字段将参考itemStatus
(id
)
约束不能有","当它是最后一个:
(...)参考itemStatus
(id
),
所以结构应该是:
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`)
);