2015-06-15 4 views
0

У меня есть эта таблица бронирования, которая имеет RESERVATION_ID , ROOM_NUM, Date_Start , Date_End and cost columns. то, что я хочу сделать, это вставить все столбцы, кроме стоимости, и автоматически заполнить их.Обновление столбца MySQL с помощью триггера

delimiter // 
CREATE TRIGGER upd_check before INSERT ON reservation 
    FOR EACH ROW 
    BEGIN 
     IF NEW.RESERVATION_COST = NULL THEN 
      SET NEW.RESERVATION_COST = 'timestampdiff(day, NEW.RESERVATION_STARTD, NEW.RESERVATION_ENDD)*70'; 
     END IF; 
    END;// 
delimiter ; 

Я написал эту trigger, чтобы сделать это, но всякий раз, когда я нажимаю Применить, чтобы вставить все ничего не вставляется в RESERVATION_COST колонку.

Почему?

+0

Измените, если условие как '' IF NEW.RESERVATION_COST NULL THEN'' и проверьте, не имеет ли он никакого эффекта! ?? –

+0

Не используйте = null в операторах SQL. Использовать значение null. – Tim3880

+0

Спасибо всем: метод D @ Tim3880 работал –

ответ

0

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

Эта ссылка явно не говорит об этом, но она говорит «в связанной таблице». Не то же самое: https://dev.mysql.com/doc/refman/5.0/en/triggers.html

+0

Я сделал это работу, мне просто пришлось изменить = Null и удалить '' из инструкции SET –

+0

Спасибо, что обновил меня. Я был неправ, узнал что-то. –

+0

Без проблем –

0

Вы не можете сравнить значение с NULL, вам необходимо установить вместо этого IS NULL.

например.

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