2016-01-26 3 views
0

Мне нужно обновить oc_product_attribute со значением, полученным из вставленной строки в транспортных средствах. Как я могу получить это конкретное значение? (XxxCOLUMN_VALUExxx)MYSQL Trigger для обновления другой таблицы на основе вставленного значения

CREATE TRIGGER vehicle_attributes AFTER INSERT ON vehicles 
    FOR EACH ROW 
     BEGIN 
      UPDATE oc_product_attribute SET oc_product_attribute.vehicle_name = 
      (SELECT CONCAT(vehicles.make_name, ' ', vehicles.model_name, ' ', 
       vehicles.chassis) FROM vehicles WHERE vehicles.id = xxxCOLUMN_VALUExxx) 
      WHERE oc_product_attribute.id = xxxCOLUMN_VALUExxx 

     END 

Даже упрощена ниже: Я все еще получаю сообщение об ошибке в MYSQL:

CREATE TRIGGER vehicle_attributes AFTER INSERT ON vehicles 
    FOR EACH ROW 
    BEGIN 
     UPDATE oc_product_attribute 
     SET oc_product_attribute.vehicle_name = 
      CONCAT(NEW.make_name,' ',NEW.model_name,' ',NEW.chassis);    
    END; 

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «» в строке 7

и упрощенной дальнейшей:

CREATE TRIGGER vehicle_attributes AFTER INSERT ON vehicles 
    FOR EACH ROW 
    BEGIN 
    UPDATE oc_product_attribute 
     SET oc_product_attribute.vehicle_name = 'test' WHERE 1   
    END; 

Я все еще получаю ту же ошибку - это может быть MYSQL Безразлично» t активированы триггеры?

+0

, пожалуйста, предоставьте обе стороны двух задействованных табличных транспортных средств и oc_product_attribute – luksch

ответ

0

Я думаю, вам нужно обновить oc_product_attribute так:

CREATE TRIGGER vehicle_attributes AFTER INSERT ON vehicles 
FOR EACH ROW 
    BEGIN 
     UPDATE oc_product_attribute 
     SET oc_product_attribute.vehicle_name = 
      CONCAT(NEW.make_name,' ',NEW.model_name,' ',NEW.chassis) 
     WHERE oc_product_attribute.id = NEW.id; 
    END 

Хотя я не уверен, что если oc_product_attribute.id держит vehicles.id. Однако важно, что в INSERT AFTER TRIGGER вы можете получить доступ к значениям вставленной строки на NEW.columnName.

N.B. В триггере обновления вы также можете получить доступ к значению до изменения с помощью OLD.columnName

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