2015-10-26 3 views
0

Я создал следующий триггер с PHPMyAdmin на XAMPP для оконMySQL: Не разрешается возвращать результирующий набор из триггера # 1415

CREATE TRIGGER strip_ud_in BEFORE INSERT ON ci_sessions 
FOR EACH ROW 
BEGIN 
SET NEW.user_data = REPLACE(NEW.user_data,'"','&#34'); 
SET NEW.user_data = REPLACE(NEW.user_data,':','&#58'); 
SET NEW.user_data = REPLACE(NEW.user_data,';','&#59'); 
SET NEW.user_data = REPLACE(NEW.user_data,'{','&#123'); 
SET NEW.user_data = REPLACE(NEW.user_data,'}','&#125'); 
END 

и я получил ошибку на первой попытке вставить на ci_sessions таблица по телефону контроллер с URL из моей хромированной браузера

Номер ошибки: 1415: не разрешается возвращать результирующий набор из триггера

+0

У вас есть другие триггеры на ci_sessions? – zedfoxus

+0

Я попытался заменить NEW.user_data переменной @ud и сохранил только последний. Не работает. –

+0

zedfoxus я действительно. Это проблема?! –

ответ

0

Я не т hink этот триггер имеет какое-либо отношение к ошибке. Давайте возьмем пример, чтобы помочь отвлечь внимание от этого триггера.

-- create a dummy table 
create table ci_sessions_test (user_data varchar(100)); 

-- create the same kind of trigger on this dummy table 
delimiter // 

CREATE TRIGGER strip_ud_in_ci_sessions_test BEFORE INSERT ON ci_sessions_test 
FOR EACH ROW 
BEGIN 
SET NEW.user_data = REPLACE(NEW.user_data,'"','&#34'); 
SET NEW.user_data = REPLACE(NEW.user_data,':','&#58'); 
SET NEW.user_data = REPLACE(NEW.user_data,';','&#59'); 
SET NEW.user_data = REPLACE(NEW.user_data,'{','&#123'); 
SET NEW.user_data = REPLACE(NEW.user_data,'}','&#125'); 
END // 

delimiter ; 

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

insert into ci_sessions_test values ('test'), ('testing;'); 

select * from ci_sessions_test; 

Results: 
user_data 
---------- 
test 
testing&#59 

Это означает, что триггер функционирует соответствующим образом, не вызывая ошибок. Он также указывает, что если в этой таблице есть другие триггеры, они могут стать причиной ошибки. В этих триггерах убедитесь, что если вы не используете SELECT fields FROM .... Если вы используете что-то подобное, вам может потребоваться изменить их на SELECT fields INTO localvariablename FROM ....

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