2013-07-31 4 views
1

Я пытаюсь создать триггер в phpMyAdmin, где я могу изменять значение поля всякий раз, когда он вставлен в зависимости от имени поля. Я использую этот синтаксисTrigger phpMyAdmin с использованием переменных

CREATE TRIGGER lawyers AFTER INSERT ON wp_posts 
FOR EACH ROW 
BEGIN 
UPDATE wp_posts SET post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->'  
WHERE ID = NEW.ID AND post_type = 'lawyers'; 
END 

, но я не могу заставить его работать, он говорит:

#1064 - 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 '' at line 4 

Можете ли вы мне помочь?

ответ

2

Вы так же не можете записать такой триггер, обновляя ту же таблицу, в которую вы вставляете. Когда я тестировал курок, я получил это:

ERROR 1442 (HY000): Can't update table 'wp_posts' in stored function/trigger 
because it is already used by statement which invoked this stored 
function/trigger. 

Следующие должны делать то же самое, как ваш триггер:

CREATE TRIGGER lawyers BEFORE INSERT ON wp_posts 
FOR EACH ROW 
BEGIN 
IF (NEW.post_type = 'lawyers') THEN 
    SET NEW.post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->'; 
END IF; 
END 

Ответ: PHPMYADMIN необходим специальный режим, если вы используете CREATE TRIGGER или СОЗДАТЬ ПРОЦЕДУРУ.

  • Ниже окна SQL запросов, есть небольшая форма поля помечены Разделитель. Установите это значение $$.

  • Введите ваш оператор CREATE TRIGGER и завершите его с помощью $$ после последнего END.

  • Нажмите на кнопку Go.

См http://wiki.phpmyadmin.net/pma/Trigger

Это аналогично использованию DELIMITER built-in command в клиенте MySQL из командной строки.

+0

Здравствуйте, спасибо, что ответили. Я пробовал ваш запрос, но я продолжаю получать ту же ошибку: '# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с '' в строке 5'. Как вы думаете, это проблема с сервером? –

+0

Какую версию MySQL вы используете? Попробуйте 'SELECT VERSION();' –

+0

MySQL: 5.1.41-3 –

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