2016-11-24 3 views
1

DB: MySQLMySQL триггер ошибка: 1442

Использования: MySQL Workbench

В настоящее время я работаю над проектом для класса, в котором мы должны создать веб-сайт аэропорта, в котором могут войти/зарегистрироваться и купить билеты пользователей для различных рейсов. После некоторого времени работы над проектом я понял, что мой триггер не работает.

Я получаю сообщение об ошибке: Error Code: 1442. Can't update table 'reservation' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

Я наткнулся на эту ошибку, пытаясь вставить оговорку, прежде чем создавать формы для пользователей, чтобы выбрать и купить билеты. Мне было интересно, может ли кто-нибудь взглянуть на мою базу данных, включить использование команд, а также мой код запуска. Любая помощь была бы высоко оценена, потому что я нахожусь в конце, пытаясь понять это в течение нескольких часов. Команда

Вставка: http://pastebin.com/tyBPWNDd

Вся БД и Trigger в вопрос: http://pastebin.com/BvUj1NdH

Решено: спасибо всем помощникам я был в состоянии определить мою проблему, которая была с помощью рекурсивных триггеров, когда MySQL не поддерживает , Я решил свою проблему, удалив рекурсивный код и позволяя серверу backend обрабатывать текущий_датель вместо триггера. Я скоро отправлю фиксированный триггер.

+0

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

+0

@TimBiegeleisen Спасибо! Вы очень помогли – Tonk

+0

Рад быть полезен вам, но, возможно, вам следует прокомментировать, как вы решили проблему, чтобы этот вопрос мог быть более полезным для других. –

ответ

1

Да, ошибка объяснительна. Вы пытаетесь создать рекурсивный триггер, который не поддерживается в MySQL как можно видеть в вашем публикуемую код

Create Trigger reservation_all 
    after insert on Reservation 
    for each row 
    begin 
     update Reservation 

Проверить MySQL Documentation на то же самое для более Infromation. Цитата из этого

  • Stored functions cannot be used recursively.

  • A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.

+0

Большое вам спасибо! Теперь это имеет большой смысл, и я не могу поверить, что пропустил что-то вроде этого. Вы очень помогаете Рахулу. – Tonk

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