2016-04-07 1 views
0

здесь mycodeERROR 1064 (42000): проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «END»

я пытаюсь создать триггер после вставки на столе говорят, продукт таблица к таблице изменения Traker называется аудит таблицы

как этот

DELIMITER // 
    CREATE TRIGGER product_table_after_insert 
    AFTER INSERT 
    ON product_table FOR EACH ROW 

    BEGIN 

    DECLARE l_product_description varchar(500); 
    DECLARE l_product_number int; 
    set @l_table_name = 'product_table'; 
    set @l_action = 'INSERT'; 
    set @l_table_column = 'all columns'; 
    set @l_description = 'new row inserted'; 

    select p.product_description ,p.product_number into @l_product_description, @l_product_number from product_table p where p.product_description = (select max(pg.product_number)from product_table pg); 
    -- Insert record into audit table 
     INSERT INTO audit_table_test 
    (table_name, 
    changed_row_id, 
    action, 
    table_column, 
    change_desciption, 
    change_time 
    ) 
    VALUES 
    (l_table_name, 
     l_product_number, 
     l_action, 
     l_table_column, 
     l_description, 
     SYSDATE() 
     ) 
    END 
    // 
    DELIMITER ; 

это ошибка, я получаю

я попытался все эти способы

используется |, S и т.д. вместо // и

удалены ; после окончания, расположенные // или \ или $$ вместе и под конец

ничего не работает, кто-то пожалуйста, помогите мне

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 32 

какой-либо пожалуйста, помогите мне

+1

Добавить ',' после вставки заявления (до 'END') –

+0

YUP его должностного лица! Я d самый большой выдающийся глупый из всех !!!!! – Mukund

+0

простая ошибка, требуется только полукольцо, я извиняюсь – Mukund

ответ

1

Решение, предоставленное @juergen в комментариях, работает нормально, то есть Добавить ; после инструкции вставки (до окончания END) Спасибо, что нашли ошибку. Я искал его в течение 4 часов, так что ответ здесь:

DELIMITER // 
CREATE TRIGGER product_table_after_insert 
    AFTER INSERT 
    ON product_table 
    FOR EACH ROW 

    BEGIN 

    DECLARE l_product_description varchar(500); 
    DECLARE l_product_number int; 
    set @l_table_name = 'product_table'; 
    set @l_action = 'INSERT'; 
    set @l_table_column = 'all columns'; 
    set @l_description = 'new row inserted'; 

    select p.product_description ,p.product_number 
     into @l_product_description, @l_product_number 
     from product_table p 
     where p.product_description = 
     (select max(pg.product_number) 
      from product_table pg); 
    -- Insert record into audit table 
    INSERT INTO audit_table_test 
     (table_name, 
      changed_row_id, 
      action, 
      table_column, 
      change_desciption, 
      change_time 
     ) 
     VALUES 
     (l_table_name, 
      l_product_number, 
      l_action, 
      l_table_column, 
      l_description, 
      SYSDATE() 
     ); //<<---- Semicolon needed to be here 
    END 
    // 
DELIMITER; 
1
  1. Место SQL терминатор «;» после создания инструкции таблицы
  2. удалить ";" после окончания.

Так что ваш код должен быть в соответствии с ниже,

DELIMITER // 
    CREATE TRIGGER product_table_after_insert 
    AFTER INSERT 
    ON product_table FOR EACH ROW 

    BEGIN 

    DECLARE l_product_description varchar(500); 
    DECLARE l_product_number int; 
    set @l_table_name = 'product_table'; 
    set @l_action = 'INSERT'; 
    set @l_table_column = 'all columns'; 
    set @l_description = 'new row inserted'; 

    select p.product_description ,p.product_number into @l_product_description, @l_product_number from product_table p where p.product_description = (select max(pg.product_number)from product_table pg); 
    -- Insert record into audit table 
     INSERT INTO audit_table_test 
    (table_name, 
    changed_row_id, 
    action, 
    table_column, 
    change_desciption, 
    change_time 
    ) 
    VALUES 
    (l_table_name, 
     l_product_number, 
     l_action, 
     l_table_column, 
     l_description, 
     SYSDATE() 
     ); 
    END 
    // 
    DELIMITER 
+0

нет, не все, что в моем вопросе прав, за исключением того, что я пропустил полуколонну в конце инструкции insert – Mukund