2013-09-03 4 views
0

My Mysql Table не поддерживает создание нескольких триггеров. но у меня есть 3 триггеров для трех запросов обновления, как я могу запустить эти триггера с помощью одного триггера,Mysql три триггера для одного триггера

ОШИБКА: # 1235 - Эта версия MySQL еще не поддерживает «множественный триггеров одновременно действий и событий за один стол»

благодаря

CREATE TRIGGER `update_yeild2` BEFORE UPDATE ON `today_plan` 
FOR EACH ROW SET NEW.yeild = COALESCE((SELECT kiln_master.yeild 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0) 


CREATE TRIGGER `update_yeild1` BEFORE UPDATE ON `today_plan` 
FOR EACH ROW SET NEW.temp = COALESCE((SELECT kiln_master.temp 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0) 

CREATE TRIGGER `update_yeild0` BEFORE UPDATE ON `today_plan` 
FOR EACH ROW SET NEW.kiln = COALESCE((SELECT kiln_master.kiln 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0) 

ОБНОВЛЕНО КОД:

CREATE TRIGGER `update_yeild2` BEFORE UPDATE ON `today_plan` 
FOR EACH ROW 

BEGIN 

SET NEW.yeild = COALESCE((SELECT kiln_master.yeild 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0); 


    SET NEW.temp = COALESCE((SELECT kiln_master.temp 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0); 

    SET NEW.kiln = COALESCE((SELECT kiln_master.kiln 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0); 

END 

благодаря

Рабочий код: благодаря RandomSeed

delimiter // 

CREATE TRIGGER `update_yeild2` BEFORE UPDATE ON `today_plan` 
FOR EACH ROW 

BEGIN 

SET NEW.yeild = COALESCE((SELECT kiln_master.yeild 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0); 


    SET NEW.temp = COALESCE((SELECT kiln_master.temp 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0); 

    SET NEW.kiln = COALESCE((SELECT kiln_master.kiln 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0); 

END 

// 
delimiter ; 

ответ

1

Просто включают операции трех триггеров в одном триггере:

CREATE TRIGGER (...) 
FOR EACH ROW 
BEGIN 
    SET NEW.yeild = (...) ; 
    SET NEW.temp = (...) ; 
    SET NEW.kiln = (...) ; 
END ; 
+0

Ах теперь я получить его, вы были вероятно, ищет «BEGIN ... END». – RandomSeed

+0

дорогой сэр. он вызывает ошибку. :( – 9pixle

+0

# 1064 - У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 10 – 9pixle

Смежные вопросы