как отследить триггер mysql или помочь с этим - PullRequest
0 голосов
/ 25 июня 2010

Есть ли способ отследить триггеры MySql? Я застрял со следующим.

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


BEGIN 
    declare pos int;
    pos = locate(',',new.Admin1Code, 1);
    if (pos = -1) then
        set new.StateCode = Concat(New.CountryCode,'.',New.Admin1Code);
    else
        set new.StateCode = Concat(New.CountryCode,'.',substring(New.Admin1Code,1,pos));
    end if;   
END;

В чем там проблема?

Спасибо.

1 Ответ

0 голосов
/ 25 июня 2010

LOCATE никогда не вернет -1 - если вы попытаетесь:

SELECT LOCATE(',', 'abbc')

... возвращает 0. Использование:

if (pos > 0) then
  set new.StateCode = Concat(New.CountryCode,'.',substring(New.Admin1Code, 1, pos));        
else
  set new.StateCode = Concat(New.CountryCode,'.',New.Admin1Code);
end if;

В документации сказано так же:

Возвращает 0, если substr отсутствует в str.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...