Я не знаю, как сформулировать соответствующий заголовок для этого. Проблема заключается в следующем. Менеджер групп может добавлять события в группы на моем веб-сайте, когда добавляется событие, члены группы, которые выбрали так, должны быть автоматически добавлены к событию в качестве участников. Проблема в том, что некоторые пользователи, возможно, уже выбрали, что они посещают событие до его добавления в группу, поэтому их запись будет существовать в таблице с участниками, и я получу ошибку Duplicate entry
на моем триггере.MySQL несколько строк вставки пропустить существующие записи
Я хочу спросить, как по-прежнему иметь первичный ключ на 2 колонки - т.е. не допускать тот же пользователь должен быть вставлен в events_attendees
с тем же event_id
, но все-таки вставить остальные строки в случае многоэтажного вставки?
таблица групп
group_id | group_name ...
таблица пользователей
user_id | user_name ...
таблица событий
event_id | event_name ...
стол groups_members
group_id | user_id | autoJoinEvents
столик groups_events
group_id | event_id
столик events_attendees`
event_id | user_id
Триггер в вопросе находится на groups_events
на AFTER INSERT
INSERT INTO events_attendees (event_id, user_id)
SELECT NEW.event_id, user_id
FROM groups_members
WHERE group_id = NEW.group_id AND autoJoinEvents = 1
Да, я полагаю, что именно магия мне нужно, но Я получаю код проверки blah blah, который соответствует blah blah рядом с «IGNORE» –
Синтаксис для этого был 'INSERT IGNORE ...' Я позволил вам отредактировать ваш ответ. Благодаря! –
Спасибо, я вроде как смешанные два возможных способа сделать это. В INSERT IGNORE есть небольшая оговорка, но для вашего случая использования она должна работать нормально. – amenadiel