自己写的函数的WHERE条件没有生效啊
DELIMITER $$
DROP FUNCTION IF EXISTS `workheat`.`nextval` $$
CREATE FUNCTION `workheat`.`nextval` (seq_name VARCHAR(1),user_name VARCHAR(30)) RETURNS VARCHAR(30)
BEGIN
DECLARE val int;
DECLARE s_id VARCHAR(40);
SET val = 0;
UPDATE sequence
SET current_value = LAST_INSERT_ID(current_value + increment)
WHERE name = seq_name;
SELECT LAST_INSERT_ID() INTO val;
SET s_id = CONCAT(seq_name,val);
UPDATE user_info SET STATION_GROUP = s_id,UPD_DATE = now() WHERE USER_NAME = user_name; -----这块儿有问题了。。。。。。
RETURN s_id;
END $$
DELIMITER ;
---------------------------
问题就是WHERE USER_NAME = user_name; 这句根本没有生效。把user_info这个表的
所有的STATION_GROUP和UPD_DATE 都给更新了。请问是什么原因呢?而UPDATE sequence
却没有问题。。。。。
DROP FUNCTION IF EXISTS `workheat`.`nextval` $$
CREATE FUNCTION `workheat`.`nextval` (seq_name VARCHAR(1),user_name VARCHAR(30)) RETURNS VARCHAR(30)
BEGIN
DECLARE val int;
DECLARE s_id VARCHAR(40);
SET val = 0;
UPDATE sequence
SET current_value = LAST_INSERT_ID(current_value + increment)
WHERE name = seq_name;
SELECT LAST_INSERT_ID() INTO val;
SET s_id = CONCAT(seq_name,val);
UPDATE user_info SET STATION_GROUP = s_id,UPD_DATE = now() WHERE USER_NAME = user_name; -----这块儿有问题了。。。。。。
RETURN s_id;
END $$
DELIMITER ;
---------------------------
问题就是WHERE USER_NAME = user_name; 这句根本没有生效。把user_info这个表的
所有的STATION_GROUP和UPD_DATE 都给更新了。请问是什么原因呢?而UPDATE sequence
却没有问题。。。。。
作者: doushi 发布时间: 2011-06-14
UPDATE user_info SET STATION_GROUP = s_id,UPD_DATE = now() WHERE USER_NAME = user_name; --
USER_NAME = user_name 这个后面的是字符串吧,为什么没有加引号呢?你试试吧
USER_NAME = ‘user_name’
USER_NAME = user_name 这个后面的是字符串吧,为什么没有加引号呢?你试试吧
USER_NAME = ‘user_name’
作者: king2934 发布时间: 2011-06-14
QUOTE:
UPDATE user_info SET STATION_GROUP = s_id,UPD_DATE = now() WHERE USER_NAME = user_name; --
USER_N ...
king2934 发表于 2011-06-14 12:26
USER_N ...
king2934 发表于 2011-06-14 12:26
不是这个原因。可能是数据库字段的字符格式问题吧。。。。。
作者: doushi 发布时间: 2011-06-14