因此,想象一下从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表中删除Sizeteacher字段,当您选择SELECT时,使用外键从student表中获取信息。

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

07-24 17:30