使用存储过程在mysql中更新表

时间:2012-03-30 13:34:35

标签: mysql

我在mysql中存储过程。该过程已创建,但在调用该过程时出现错误:

  

“错误代码:1175。您正在使用安全更新模式,但您尝试过   更新没有使用KEY列的WHERE的表要禁用安全性   模式,切换首选项中的选项 - > SQL编辑器 - >查询编辑器   并重新连接。“

以下是程序:

------------------------------------------------
drop procedure if exists update_per_det;

delimiter //

create procedure update_per_det(IN name varchar(30))

begin

 DECLARE age1 int;

set age1=(select CalAge(name));

update  per_det set age=age1 where username=name;

end;//

delimiter ;

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

试试这个:

set age1=(select CalAge(name));

SET SQL_SAFE_UPDATES=0;

update  per_det set age=age1 where username=name;

答案 1 :(得分:0)

像这样使用 DELIMITER

DROP PROCEDURE IF EXISTS DealStateChange;

DELIMITER //

CREATE PROCEDURE DealStateChange(statusID tinyint)



     UPDATE deals
          SET `status` = statusID
      WHERE `id` = 1001;




//
DELIMITER ;


/* for execute PROCEDURE */
CALL DealStateChange(11);