Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 与外键相关的表彼此同步_Mysql_Yii_Phpmyadmin - Fatal编程技术网

Mysql 与外键相关的表彼此同步

Mysql 与外键相关的表彼此同步,mysql,yii,phpmyadmin,Mysql,Yii,Phpmyadmin,我正在使用phpmyadmin for mysql。我有4个表project1、project2、project3和combine表。假设combine表通过外键连接到所有其他表,我们在一些后台脚本的帮助下向project1、prject2和project3表添加一些数据。是否有办法自动更新联合收割机表中相应的外键(无需手动更新记录)。我正在为GUI使用一个yii框架。 由于我是mysql和yii框架的新手,请提供一些建议。 不完全理解您的问题,但我认为您指的是删除时的和更新时的 删除时和更新时

我正在使用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图像供您查看


看看存储过程