因此,想象一下从Excel导入的2个大型mysql表。
表1具有SNameID字段,以及描述SNameID(年龄,大小)的其他字段。
SNameID年龄大小
Table2具有字段TeacherID,每个老师都有学生的SNameID和描述字段(年龄,大小)。
TeacherID SNameID年龄大小
这个想法是:Table2具有TeacherID数据和关系信息:这是他的学生。这是一个很糟糕的体系结构...但是随着时间的推移,我必须使用两个表。
请告诉我,当任何一个表的Age和/或Size发生变化时,我可以让mysql根据SNameID自动更新另一个表吗?
我只是无法弄清楚...及其在许多表格中的问题...我所需要的只是一个提示,在哪里或读什么-我可以在以后弄清楚它,并将在此处发布解决方案。
最佳答案
您可以设置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