Условие в триггере mysql

386
29 января 2017, 13:37

Подскажите пожалуйста, делаю триггер

    CREATE TRIGGER `updateBonusTable` AFTER UPDATE ON `character_subclasses` FOR EACH ROW BEGIN
 IF(NEW.level = 85) THEN
    IF(NEW.isBase = 1) THEN
      INSERT into `characters_bonus_85_lvl` (`charName`) VALUES(NEW.char_obj_id);
    END IF;
END IF;
END;  

Мне нужно инсертить в таблицу characters_bonus_85_lvl только тот id который получил NEW.level = 85, а у меня получается он инсертить всех у кого значение = 85 в таблице character_subclasses в таблицу characters_bonus_85_lvl. Причем есть например id 123456 и поле isBase у одного = 1 у другого 123456 = 0 мне нужно только то у кого = 1, опять же игнор, инсертит всех. Что не так делаю? Мне нужно получить в таблицу characters_bonus_85_lvl только тех у кого произошло изменение.

Answer 1

Мне нужно получить в таблицу characters_bonus_85_lvl только тех у кого произошло изменение.

Если нужно вставлять записи только тех, у кого прошло изменение, то надо проверять не только что новое значение равно требуемому, но и что старое НЕ равно. Т.е. не

IF (NEW.level = 85)

а

IF (NEW.level = 85) AND (OLD.level != 85)
READ ALSO
Как вычисляется длина хеш-таблицы?

Как вычисляется длина хеш-таблицы?

Уважаемые коллеги, столкнулся с таким вопросом касаемо хэш-таблицы, подскажите пожалуйста:

400
Как преобразовать binary(111010000001110000000000) в integer?

Как преобразовать binary(111010000001110000000000) в integer?

Как преобразовать binary(записано в string 111010000001110000000000) в integer?

307
Кнопка не растягивается на 2 строки

Кнопка не растягивается на 2 строки

Не могу понять по какой причине кнопка с ID totalButton, не расширяется на 2 строки, хотя rowSpan="2" указан

346
Проблема с подключением второй БД

Проблема с подключением второй БД

У меня была одна БД, потом пришлось создать еще одну для других целейПосле создания поменял DATEBASE_VERSION, но все ровно ошибка:

388