Это правильный синтаксис триггера MySQL? - PullRequest
0 голосов
/ 28 марта 2012

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

Входящая строка выглядит следующим образом: ((admin)) [[clientId]] >>> Обновить профиль клиента

эта строка будет вставлена ​​в столбец «Сообщение». но в этой таблице есть еще 3 столбца, которые я хочу вставить: user_id, client_id & action. поэтому мне нужно разобрать сообщение на 3 разные строки, чтобы поместить их в правильный столбец.

Это то, что у меня есть, это правильно ???

CREATE TRIGGER 'parse_log4j_message' BEFORE INSERT ON 'util_audit' 
FOR EACH ROW BEGIN   
select NEW.MESSAGE into @message; //adding String into this variable
    select LEFT(message, 1) from table into @firstChar; //get first Char in Message
IF strcmp(@firstChar,'(') = 0 THEN  //if first char is '(', then message is correct
    SELECT SUBSTRING_INDEX(@message, ')', 2) into @userId; //-> admin
    SELECT SUBSTRING_INDEX(@message, ']', 2) into @tempClientId;  
    SELECT SUBSTRING_INDEX(@message, '[', -1) into @clientId; //-> clientId
    SELECT SUBSTRING_INDEX(@message, '>', -1) into @action; //-> the rest of the message
    SET NEW.USER_ID = @userId;  // set into the columns of the table
    SET NEW.CLIENT_ID = @clientId;
    SET NEW.ACTION = @action; 
END IF; 
END;

1 Ответ

2 голосов
/ 28 марта 2012

Попробуйте сначала этот скрипт синтаксического анализа -

SET @message = '((admin)) [[clientId]] >>>Update client Profile';

SET @userId = SUBSTRING_INDEX(SUBSTRING_INDEX(@message, '))', 1), '((', -1);
SET @clientId = SUBSTRING_INDEX(SUBSTRING_INDEX(@message, ']]', 1), '[[', -1);
SET @action = SUBSTRING_INDEX(@message, '>>>', -1);

SELECT @userId, @clientId, @action;

+---------+-----------+-----------------------+
| @userId | @clientId | @action               |
+---------+-----------+-----------------------+
| admin   | clientId  | Update client Profile |
+---------+-----------+-----------------------+

Если это так, добавьте это решение в свой триггер.

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