想象一下从Excel导入的两个大的mysql表。
Table1具有字段SNameID,以及描述SNameID(年龄,大小)的其他字段。
SNameID年龄大小
Table2有字段TeacherID,每个教师都有学生的SNameID和描述字段(年龄,大小)。
TeacherID SNameID年龄大小
这个想法是:Table2有TeacherID数据和关系信息:这是他的学生。这是一个非常糟糕的架构...但我必须使用两个表,因为它们更进一步。
请告诉我,当任何表中的Age和/或Size发生某些变化时,我可以根据SNameID使mysql自动更新其他表吗?
我只是想不出来...而且它在我的许多表格中都存在问题...我需要的只是提示在哪里或者要阅读什么 - 我可以在之后找到它并在此处发布解决方案同样。
答案 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
表中删除Size
和teacher
字段,当您选择SELECT时,使用外键从student
表中获取信息。
SELECT t.*, s.* FROM teacher t LEFT JOIN student s ON t.SNameID = s.SNameID