MySQL:不允许从触发器1415返回结果集
我在xampp for windows上使用phpmyadmin创建了以下触发器MySQL:不允许从触发器1415返回结果集,mysql,triggers,phpmyadmin,Mysql,Triggers,Phpmyadmin,我在xampp for windows上使用phpmyadmin创建了以下触发器 CREATE TRIGGER strip_ud_in BEFORE INSERT ON ci_sessions FOR EACH ROW BEGIN SET NEW.user_data = REPLACE(NEW.user_data,'"','"'); SET NEW.user_data = REPLACE(NEW.user_data,':',':'); SET NEW.user_dat
CREATE TRIGGER strip_ud_in BEFORE INSERT ON ci_sessions
FOR EACH ROW
BEGIN
SET NEW.user_data = REPLACE(NEW.user_data,'"','"');
SET NEW.user_data = REPLACE(NEW.user_data,':',':');
SET NEW.user_data = REPLACE(NEW.user_data,';',';');
SET NEW.user_data = REPLACE(NEW.user_data,'{','{');
SET NEW.user_data = REPLACE(NEW.user_data,'}','}');
END
我第一次尝试在ci_sessions表中插入时,通过从我的chrome浏览器调用带有url的控制器,出现了错误
错误号:1415:不允许从触发器返回结果集
我认为这个触发器与错误无关。让我们举一个例子来帮助大家把注意力从这个触发器上移开
-- 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,'"','"');
SET NEW.user_data = REPLACE(NEW.user_data,':',':');
SET NEW.user_data = REPLACE(NEW.user_data,';',';');
SET NEW.user_data = REPLACE(NEW.user_data,'{','{');
SET NEW.user_data = REPLACE(NEW.user_data,'}','}');
END //
delimiter ;
现在添加一些数据。请注意,结果看起来很好
insert into ci_sessions_test values ('test'), ('testing;');
select * from ci_sessions_test;
Results:
user_data
----------
test
testing;
这表明触发器功能正常,不会导致错误。它还表明,如果此表上有其他触发器,则它们可能是导致错误的原因。在这些触发器中,请确保如果您没有使用来自…的选择字段。。。。如果您使用的是类似的内容,您可能需要将它们更改为将字段从…选择为localvariablename。在ci_会话上是否有其他触发器?我尝试用@ud variable替换NEW.user_数据,只保留了最后一个。也不管用。泽德福克斯,我真的管用。这有问题吗?!问题可能出在其他触发器上。据我所说,这个触发器没有问题。它很棘手。因为它是插入之前此事件的唯一触发器。