2013-08-08 2 views
0
DELIMITER $$ 
    DROP TRIGGER IF EXISTS ravi.`after_insert`$$ 
    CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    TRIGGER `ravi`.`after_insert` AFTER UPDATE 
    ON `ravi`.`user_data` 
    FOR EACH ROW 
    BEGIN` 
IF(NEW.field1 !=OLD.field1)THEN 
INSERT INTO logs_data(uri,field_id,old_value,new_value,modified_date) 
VALUES(NEW.uri,"filed1",OLD.field1,NEW.field1,NOW()); 
END IF; 
IF(NEW.field2!=OLD.field2)THEN 
INSERT INTO logs_date(uri,field_id,old_value,new_value,modified_date) 
VALUES(NEW.uri,"field2",OLD.field2,NEW.field2,NOW()); 
END IF; 
END$$ 

DELIMITER ; 

значения не вставляя во второй таблице, но триггер работает триггер не работаетзначения не вставляя в другой таблице

ответ

0
  1. Я считаю, вы хотели использовать IF заявление вместо IF() Функция
  2. имя триггера after_insert сбивает с толку, так как вы используете AFTER UPDATE событие
  3. есть также пара опечаток 'filed1' вместо 'field1' и, что более важно log_date вместо log_data во втором INSERT заявление.

Это сказанное триггер должен вероятно выглядеть

DELIMITER $$ 
CREATE TRIGGER user_data_after_update 
AFTER UPDATE ON user_data 
FOR EACH ROW 
BEGIN 
    IF NEW.field1 != OLD.field1 THEN 
     INSERT INTO logs_data(uri, field_id, old_value, new_value, modified_date) 
     VALUES(NEW.uri, 'field1', OLD.field1, NEW.field1, NOW()); 
    END IF; 
    IF NEW.field2 != OLD.field2 THEN 
     INSERT INTO logs_data(uri, field_id, old_value, new_value, modified_date) 
     VALUES(NEW.uri, 'field2', OLD.field2, NEW.field2, NOW()); 
    END IF; 
END$$ 
DELIMITER ; 

Вот SQLFiddle демо

+0

@ANILJOSHI Если это помогло, пожалуйста, рассмотреть вопрос о ** [принять] (HTTP: // meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)** ответ. – peterm

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