Почему этот триггер MySQL не будет работать должным образом? - PullRequest
0 голосов
/ 14 марта 2012

Я работаю над установкой WordPress для клиента. Выбранный плагин для электронной коммерции плохо интегрируется с пользователями Wordpress. Я пытаюсь вставить новые записи в систему учетных записей пользователей плагина при создании новой записи пользователя в WordPress. Мне показалось, что триггер в таблице wp_users, копирующий пользовательские данные в таблицу плагинов перед вставкой, сработает. Достаточно просто. Однако в моем тестировании я не могу заставить триггер таблицы wp_users что-либо делать. Создание новой учетной записи пользователя зависает и предотвращает вставку данных в wp_users, если триггерное событие перед вставкой или после вставки. При указании перед обновлением разрешается вставка данных в wp_users, но не в таблицу плагинов. Ни разу он не выполнил правильно триггер. Вот мой код:

DROP TRIGGER IF EXISTS  `user_update`//
CREATE TRIGGER `dbname`.`user_update`
AFTER INSERT
ON `wp_users` FOR EACH ROW
BEGIN
INSERT INTO `test_data_dump` (`username`, `password`, `email`, `first_name`, `created_at`) VALUES(user_login, user_pass, user_email, user_nicename, user_registered);
END

Любое понимание поможет имменсли.

1 Ответ

2 голосов
/ 14 марта 2012

Беда будет с этой линией. Вам нужно использовать слово new, когда вы ссылаетесь на недавно вставленные данные:

INSERT INTO 'test_data_dump' ('username', 'password', 'email', 'first_name', 'created_at')
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered);

РЕДАКТИРОВАТЬ : Если все столбцы и имена таблиц совпадают, этот синтаксис должен работать:

DROP TRIGGER IF EXISTS user_update;

CREATE TRIGGER user_update AFTER INSERT ON wp_users
FOR EACH ROW BEGIN
    INSERT INTO test_data_dump ('username', 'password', 'email', 'first_name', 'created_at')
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered); 
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...