2012-03-26 15 views
0

我有MySQL的觸發器 - 複製行從活動表要歸檔表格

我從來沒有在MySQL之前使用觸發器的一個項目建立一個數據庫的觸發器的一個問題,當我嘗試執行下面的代碼它說,有在'第4行的錯誤...

下面是代碼

CREATE TRIGGER archiveCar AFTER UPDATE ON mms_cars 
FOR EACH ROW BEGIN 
    IF NEW.active=2 THEN 
    INSERT INTO mms_cars_sold SELECT * FROM mms_cars WHERE ad_id = OLD.ad_id; 
    DELETE FROM mms_cars SELECT * FROM mms_cars WHERE ad_id = OLD.ad_id; 
    END IF; 
END; 

我不知道如果我創建這個正確的,所以請原諒任何錯誤愛好者。我的目標是從有效的表,以便在活動表

希望有人最大限度地提高搜索效率複製的信息將行的時候對汽車的狀態已被設置爲2(即銷售)存檔表可能是一種足以幫助我

親切的問候

巴里

編輯

現在我已經得到了以下

DELIMITER // 
CREATE TRIGGER archiveCar AFTER UPDATE ON mms_cars 
FOR EACH ROW 
BEGIN 
IF NEW.active=2 THEN 
    INSERT INTO mms_cars_sold SELECT * FROM mms_cars WHERE ad_id=OLD.ad_id; 
    DELETE FROM mms_cars WHERE ad_id=OLD.ad_id; 
END IF; 
END // 
DELIMITER; 

它產生這個錯誤:

1235 - 該版本的MySQL還不支持「用相同的動作時間和事件的一個表中的多個觸發器」

+0

嘗試沒有delete語句,並查看是否錯誤仍然ocurring – 2012-03-26 10:54:17

+0

一)刪除'選擇你的DELETE語句B * FROM mms_cars')您可能也有興趣https://開頭開發。 mysql.com/doc/refman/5.1/en/partitioning.html(因爲你已經有一個整數字段tht確定狀態) – VolkerK 2012-03-26 11:27:57

+0

將嘗試這些事情,感謝您的反饋 – BarryH1987 2012-03-26 11:55:10

回答

0

您應該嘗試在重新創建新觸發器之前放棄觸發器。

DELIMITER // 
DROP TRIGGER archiveCar; 
CREATE TRIGGER archiveCar AFTER UPDATE ON mms_cars 
... 
DELIMITER; 
0

1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

這意味着有已經mms_cars的更新觸發器。