0

我有一张桌子,存放友谊,例如:

Friend : f_id , f_userid1 , f_userid2 , f_status .

如果用户 a 是用户 b 的朋友,我只插入一行:

 f_userid1 = a  , f_userid2 = b

我想检查我是否有这个友谊行,将状态更改为零,我已经为它创建了一个程序:

    BEGIN                                      
        DECLARE fid INT(15);

        -- check for first one 
        SELECT f_id INTO fid FROM f WHERE
        f_userid1 = @userid1
        AND f_userid2 = @userid2;

SET oup = 1;

        IF(fid = 0) THEN

SET oup = 2;
            -- check for SECOUND one 
            SELECT f_id INTO fid FROM f WHERE f_userid2 = @userid1 AND f_userid1 = @userid2;

        END IF;

            -- if statment


        IF(fid > 0) THEN

SET oup = 3;
            -- we need to update the exiting request
            UPDATE f SET f_userid1 = @userid1 , f_userid2 = @userid2 , f_status = 0 WHERE f_id = @fid ;

        END IF;

    END

我以前也有过这样的情况

f_id = 1 , f_userid1 = a . f_userid2 = b , f_status = 1;

它运行成功,但没有任何影响!

我添加了输出,它只返回 1 ;

我的问题在哪里?

4

1 回答 1

0

为什么不把它写在一个查询中呢?

UPDATE f
SET f_status = 0
WHERE ( f_userid1 = @userid1 AND f_userid2 = @userid2 )
   OR ( f_userid1 = @userid2 AND f_userid2 = @userid1 );
于 2013-01-12T07:59:28.257 回答