2016-05-26 2 views
0

Я создал триггер:MySQL Trigger: запрос внутри ошибки запроса для переменной котировки

DELIMITER $$ 
CREATE TRIGGER member_enrollment_update AFTER UPDATE ON memberships 
FOR EACH ROW 
BEGIN 

INSERT INTO query_logs (QUERY,shop_id) VALUES ("update memberships set member_enrollment_status="+NEW.member_enrollment_status+" where card_no ='"+NEW.card_no+"'","LR00"); 

END $$ 
DELIMITER ; 

где типа данных для столбцов:

member_enrollment_status int(1) DEFAULT 0 , 
card_no varchar(15) NOT NULL 

, когда я выполняю обновление, исполняемая SQL является :

update memberships set member_enrollment_status= 1 where card_no=3678000022 and member_enrollment_status = 0 

предупреждений являются:

1292 - Truncated incorrect DOUBLE value: ''' 
1292 - Truncated incorrect DOUBLE value: ' where card_no ='' 
1292 - Truncated incorrect DOUBLE value: 'update memberships set member_enrollment_status=' 
In query_logs table, record is inserted but getting only the card_no (3678000022) as value of QUERY column. 

пожалуйста, помогите решить ошибку

ответ

1

Вместо + как конкатенация, я использовал функцию CONCAT внутри INSERT INTO заявление, чтобы решить эту проблему.

+0

Вы должны использовать функцию 'QUOTE()', чтобы обернуть столбцы, на которые вы ссылаетесь, при построении запросов с конкатенацией. Он правильно обрабатывает «NULL» (что в этом ответе, как написано, не имеет значения - пустой аргумент для 'CONCAT()' делает все выражение равным нулю), а также экранирование кавычек, обратных косых черт и т. Д. –