与外键相关的表彼此同步

时间:2013-07-11 07:25:45

标签: mysql yii phpmyadmin

我正在使用phpmyadmin for mysql。我有4个表project1,project2,project3和combine表。假设组合表使用外键连接到所有其他表,我们在一些后台脚本的帮助下将一些数据添加到project1,prject2和project3表。有没有办法自动更新组合表中相应的外键(无需手动更新记录)。我正在使用GUI的yii框架。 请提出一些建议,因为我是mysql和yii框架的新手。

1 个答案:

答案 0 :(得分:0)

http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

不完全理解您的问题,但我认为您指的是ON DELETEON UPDATE

ON DELETE& ON UPDATE选项

CASCADE
SET NULL
NO ACTION
RESTRICT

ON DELETE& ON CASCADE作为约束放在FK表中,当父ID被删除或更新时它们就会出现。

因此,如果您更改项目表中的ID并希望此更改反映在合并表中,则可以使用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
);

方法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图片供你查看。

PHP My ADMIN Foreign Key Constraints