2014-11-07 2 views
0

, пожалуйста, помогите мне ...SQL Trigger После обновления не работает

USE `arma3life`; 
DELIMITER $$ 
CREATE DEFINER=`zoxxen`@`localhost` TRIGGER `money_log` AFTER UPDATE ON `players` FOR EACH ROW 
BEGIN 
    IF NEW.`bankacc` <> OLD.`bankacc` OR NEW.`cash` <> OLD.`cash` THEN 
     INSERT INTO `supportertool_money` (
      `i_player_id` 
      ,`i_bankacc` 
      ,`i_cash` 
      ,`dt_inserted` 
     ) 
     VALUES (
      NEW.`playerid` 
      ,NEW.`bankacc` 
      ,NEW.`cash` 
      ,NOW() 
     ); 
    END IF; 
END $$ 
DELIMITER ; 

Там должны быть проблема .. Я не могу обновить свои ряды больше и Trigger не работает Я использую InnoDB

+0

Предположительно, инструкция 'if' терпит неудачу. Если бы мне пришлось угадать, почему, это потому, что значения изначально являются «NULL». –

+0

Но .. Значения могут быть NULL .. Я имею в виду, что у кого-то может быть 0 $ .. Или что вы имеете в виду? :) – Architect

+0

Вам нужно сказать, для чего нужен этот триггер базы данных. Триггерный код отличается от datbase к базе данных. – HLGEM

ответ

0

Ваше if утверждение:

IF NEW.`bankacc` <> OLD.`bankacc` OR NEW.`cash` <> OLD.`cash` THEN 

условия не делать то, что вы ожидаете, когда значения NULL. Попробуйте следующее:

IF NEW.bankacc <> OLD.bankacc OR 
    NEW.bankacc is null and OLD.bankacc is not null or 
    NEW.bankacc is not null and OLD.bankacc is null or 
    NEW.cash <> OLD.`cash` or 
    NEW.cash is null and OLD.cash is not null or 
    NEW.cash is not null and OLD.cash is null then 
+0

Mh .. Я могу обновить его, но то он терпит неудачу :( – Architect

+0

Я имею в виду ... Если он работает один раз. Возможно, в соке есть ошибка или что-то вроде этого: o – Architect

+0

@Architect ... Если он работает один раз, я буду с подозрением относиться к данным , –

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