2012-02-24 102 views
0

所以想象從Excel導入2個大型MySQL表。mysql表同步

表1具有字段SNameID和描述SNameID(Age,Size)的其他字段。

SNameID年齡大小

表2有場TeacherID,併爲每個老師有/有學生/ s的SNameID和描述字段(年齡,大小)。

TeacherID SNameID年齡大小

的想法是:表2有TeacherID信息和關係信息:這是他的學生。這是一個相當糟糕的體系結構......但我必須使用兩個表格,因爲它們更進一步。

請告訴我,當任何表中的年齡和/或大小發生變化時,我可以根據SNameID自動更新另一個表嗎?

我只是無法弄清楚......以及它在我的許多表格中的問題......我所需要的只是提示閱讀地點或內容 - 之後我可以計算出它的結果併發布解決方案這裏也是如此。

+0

您是否嘗試過使用觸發器? – Pentium10 2012-02-24 16:46:52

+0

最後我做了很難的事情 - 當我更新一些數據時,我執行更新查詢和其他幾個查詢來更新其他表中的相同數據。它工作正常。 – Sergiu 2012-03-21 15:58:31

回答

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; 

但是,你真正應該做的是規範這個數據庫的設計。

teacher表中刪除AgeSize領域,當你選擇,獲取使用外鍵從student表中的信息。

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

Danke Kaii!它是! – Sergiu 2012-02-24 17:07:15

+0

@Sergiu歡迎來到StackOverflow!如果你喜歡這個答案,並且我能夠幫助你,請點擊答案旁邊的複選標記以接受答案。 – Kaii 2012-02-29 08:43:33