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. как тебе написал 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) |
Не знание, что так можно. |
Теперь знаешь. И больше не скажешь, что не знал
Спустя 21 секунда (4.04.2011 - 19:02) vital написал(а):
А есть в mysql какой-то аналог пхпшного isset() ?
Спустя 13 часов, 34 минуты, 19 секунд (5.04.2011 - 08:36) linker написал(а):
sergeiss
Опередил млин.
Опередил млин.
_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."
Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar