自己写的函数的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
却没有问题。。。。。

作者: 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’

作者: 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




    不是这个原因。可能是数据库字段的字符格式问题吧。。。。。

作者: doushi   发布时间: 2011-06-14