[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переделать триггер, подскажите запрос.
vital
есть запрос
UPDATE `users_money` SET `balance`=`balance`+(`bonus`*0.1)

и есть триггер на апдейт
BEGIN
INSERT INTO transactions SET
transactions.user_id=new.id,
transactions.dts=NOW(),
transactions.operation=5,
transactions.amount=old.bonus*0.1,
transactions.status='C';
END

т.е. логирует изменение баланса для _каждого_ пользователя. Беда в том, что это срабатывает и на других Апдейтах, когда не надо. Так вот как бы заменить попроще, без форича там по всем строкам users_money




Спустя 12 часов, 50 минут, 51 секунда (4.04.2011 - 08:32) linker написал(а):
Я так думаю, в триггерах возможно использование конструкции IF THEN, а значит наверное можно сравнить изменился ли баланс new.balance <> old.balance

Спустя 8 часов, 15 минут, 25 секунд (4.04.2011 - 16:47) vital написал(а):
Возможно, но не пойдет. Есть другие ситуации, когда так же меняется баланс, но делать эту запись не надо.. делается другая.

Спустя 41 минута, 22 секунды (4.04.2011 - 17:29) Dezigo написал(а):
Не кто не знает как у тебя там и с сколько.
1. как тебе написал linker, сделай это с помощью. IF THEN

Спустя 1 час, 28 минут, 53 секунды (4.04.2011 - 18:58) sergeiss написал(а):
Цитата (vital @ 4.04.2011 - 17:47)
Возможно, но не пойдет. Есть другие ситуации, когда так же меняется баланс, но делать эту запись не надо.. делается другая.

А кто тебе мешает сделать одно колонку как некий флаг, управляющий апдейтом? Пусть он будет дефолтный равен нулю.

Если так
UPDATE `users_money` SET `balance`=`balance`+(`bonus`*0.1), `flag`= 1

то в триггере делаешь одно действие,

а если эдак,
UPDATE `users_money` SET `balance`=`balance`+(`bonus`*0.1), `flag`= 2

то тогда в триггере делаешь другое действие.

Или никакого действия не делаешь, если флаг = 0.

Спустя 2 минуты, 8 секунд (4.04.2011 - 19:00) vital написал(а):
Цитата
А кто тебе мешает

Не знание, что так можно. Спасибо)

Спустя 1 минута, 46 секунд (4.04.2011 - 19:01) sergeiss написал(а):
Цитата (vital @ 4.04.2011 - 20:00)
Не знание, что так можно.

Теперь знаешь. И больше не скажешь, что не знал wink.gif

Спустя 21 секунда (4.04.2011 - 19:02) vital написал(а):
А есть в mysql какой-то аналог пхпшного isset() ?

Спустя 13 часов, 34 минуты, 19 секунд (5.04.2011 - 08:36) linker написал(а):
sergeiss
Опередил млин.


_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.