2012-07-06 69 views
0

我需要在mysql觸發器中同步表格列中的值,而在另一列中具有相同的值。這裏是我的表的例子:如何在mysql觸發器中同步表格列中的值

id___MP____sweek

1____2_____1

2____2_____1

3____1_____2

4____1_____2

5____3_____3

6____3_____3

如果用戶在第一行(id = 1)中將MP從2更改爲4,則具有相同sweek的MP的值必須改變(例如,id = 2,MP也變爲4)。

我寫了一個BEFORE UPDATE跳跳虎不工作:

USE moodle; 
DELIMITER $$ 

CREATE TRIGGER trigger_course_minpostUPD BEFORE UPDATE ON moodle.mdl_course_sections FOR EACH ROW  
BEGIN 

    IF NEW.MP <> OLD.MP THEN 
    BEGIN 
     SET @A=NEW.MP; 
     SET NEW.MP = @A 
     WHERE OLD.sweek=NEW.sweek; 
    END; 
    END IF; 

END$$ 
DELIMITER ; 

回答

0

從MySQL觸發你是不是能夠影響到在同一個表的其他行內。 你會想這樣說:

UPDATE my_table SET MP=NEW.MP WHERE sweek = NEW.sweek 

但 - 對不起 - 沒有去。 圍繞着這個 - 也是醜陋的。 如果你的表是MyISAM,你可以用一個MERGE表來包裝它,然後在MERGE表上進行操作(MySQL在這一點上並沒有意識到你實際上正在竊聽它)。然而,使用MyISAM作爲存儲引擎可能不是一件好事 - 今天的重點是InnoDB,一個更復雜的引擎。

另一個竅門是嘗試使用FEDERATED引擎。查看Roland Bouman的相關文章。再次,這是一個骯髒的黑客。

我可能會讓應用程序在相同的事務中執行此操作。

+0

謝謝你,謝爾米,你的有用答案。它看起來像我應該使用PHP來禁止用戶提交多個條目,而不是嘗試同步它們。尤金 – user1505571 2012-07-07 22:02:55

相關問題