Mysql 与外键相关的表彼此同步
我正在使用phpmyadmin for mysql。我有4个表project1、project2、project3和combine表。假设combine表通过外键连接到所有其他表,我们在一些后台脚本的帮助下向project1、prject2和project3表添加一些数据。是否有办法自动更新联合收割机表中相应的外键(无需手动更新记录)。我正在为GUI使用一个yii框架。 由于我是mysql和yii框架的新手,请提供一些建议。 不完全理解您的问题,但我认为您指的是删除时的Mysql 与外键相关的表彼此同步,mysql,yii,phpmyadmin,Mysql,Yii,Phpmyadmin,我正在使用phpmyadmin for mysql。我有4个表project1、project2、project3和combine表。假设combine表通过外键连接到所有其他表,我们在一些后台脚本的帮助下向project1、prject2和project3表添加一些数据。是否有办法自动更新联合收割机表中相应的外键(无需手动更新记录)。我正在为GUI使用一个yii框架。 由于我是mysql和yii框架的新手,请提供一些建议。 不完全理解您的问题,但我认为您指的是删除时的和更新时的 删除时和更新时
和更新时的
删除时
和更新时
选项
CASCADE
SET NULL
NO ACTION
RESTRICT
ON DELETE和ON CASCADE作为约束放置在FK表中,并且在删除或更新父ID时发生
因此,如果您在projects表中更改了一个id,并且希望此更改反映在combine表中,那么您可以在updatecascade上使用
作为旁注,为什么你们有4张桌子?我看只需要两张桌子
请注意,下面的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
);
方法2:
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图像供您查看
看看存储过程