mysql表同步

时间:2012-02-24 16:37:24

标签: mysql synchronization relationship

想象一下从Excel导入的两个大的mysql表。

Table1具有字段SNameID,以及描述SNameID(年龄,大小)的其他字段。

SNameID年龄大小

Table2有字段TeacherID,每个教师都有学生的SNameID和描述字段(年龄,大小)。

TeacherID SNameID年龄大小

这个想法是:Table2有TeacherID数据和关系信息:这是他的学生。这是一个非常糟糕的架构...但我必须使用两个表,因为它们更进一步。

请告诉我,当任何表中的Age和/或Size发生某些变化时,我可以根据SNameID使mysql自动更新其他表吗?

我只是想不出来...而且它在我的许多表格中都存在问题...我需要的只是提示在哪里或者要阅读什么 - 我可以在之后找到它并在此处发布解决方案同样。

1 个答案:

答案 0 :(得分:0)

您可以设置TRIGGER AFTER UPDATE自动同步数据中的更改:

DELIMITER |
DROP TRIGGER IF EXISTS `teacher_update`|
CREATE TRIGGER `teacher_update` AFTER UPDATE ON `teacher`
FOR EACH ROW
BEGIN
  UPDATE student s SET s.Age = NEW.Age, s.Size = NEW.Size WHERE s.SNameID = NEW.SNameID;
END;
|
DROP TRIGGER IF EXISTS `student_update`|
CREATE TRIGGER `student_update` AFTER UPDATE ON `student`
FOR EACH ROW
BEGIN
  UPDATE teacher t SET t.Age = NEW.Age, t.Size = NEW.Size WHERE t.SNameID = NEW.SNameID;
END;
|
delimiter;

但是,您真正应该做的是规范化此数据库设计。

Age表中删除Sizeteacher字段,当您选择SELECT时,使用外键从student表中获取信息。

SELECT t.*, s.* FROM teacher t LEFT JOIN student s ON t.SNameID = s.SNameID