http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
不完全理解您的问题,但我认为您指的是ON DELETE 和ON UPDATE。
ON DELETE & ON UPDATE 选项
CASCADE
SET NULL
NO ACTION
RESTRICT
ON DELETE 和 ON CASCADE 作为约束放置在 FK 表中,并且在删除或更新父 ID 时发生。
因此,如果您更改了 projects 表中的 id 并且希望此更改反映在 combine 表中,您可以使用 ON UPDATE CASCADE。
顺便说一句,为什么你有 4 张桌子?我只能看到需要 2 张桌子。
请注意,下面的 SQL 可能在语法上不正确。
CREATE TABLE tbl_projects (
id integer NOT NULL PRIMARY KEY AUTO INCREMENT,
name varchar(255),
...
...
);
方法1在组合表中为每个项目创建一行:
CREATE TABLE tbl_combine (
id integer NOT NULL PRIMARY KEY AUTO INCREMENT,
project_id integer,
...
CONSTRAINT `FK_combine_project`
FOREIGN KEY (`project_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
);
方法二:
CREATE TABLE tbl_combine (
id integer NOT NULL PRIMARY KEY AUTO INCREMENT,
project1_id integer,
project2_id integer,
project3_id integer,
...
CONSTRAINT `FK_combine_project1`
FOREIGN KEY (`project1_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
CONSTRAINT `FK_combine_project2`
FOREIGN KEY (`project2_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
CONSTRAINT `FK_combine_project3`
FOREIGN KEY (`project3_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
);
您也可以通过 phpmyadmin 中的 GUI 执行此操作,方法是单击按钮将外键设置为索引,然后转到表关系视图并选择您的选项。
希望这会有所帮助 - 我附上了一张 phpmyadmin 图片供您查看。