2016-08-05 21 views
0

mysqlワークベンチで以下の更新クエリを実行すると、2行しか更新されません。MYSQLストアドプロシージャの更新クエリ

UPDATE usertoken 
    SET StatusName='Completed',Id=null 
    WHERE (UserId=45 and BuddyId=46) OR (UserId=46 and BuddyId=45); 

ただし、ストアドプロシージャ内の同じクエリは、テーブル全体を更新します。

私は、ユーザーIDを「Stored」プロシージャ内に何も変更していないことをハードコードしました。

アイデアはありますか?

UPDATE:

私の更新クエリは、テーブルの別名を持つWHERE条件を前置した後、うまく機能
CREATE DEFINER=`root`@`%` PROCEDURE `SubmitResult`(IN userId int,IN buddyID int,IN startTime DATETIME,IN endtime DATETIME,IN questions varchar(255),IN answers varchar(255)) 
BEGIN 
SET @userId = userId; 
SET @questions = questions; 
SET @answers = answers; 
SET @buddyID = buddyID; 


SELECT @QuizId := QuizId from usertoken where ([email protected] and [email protected]) OR ([email protected] and [email protected]) LIMIT 1; 

IF @QuizId IS NULL THEN 

    INSERT INTO QUIZ (QuizStartTime, QuizEndTime, QuizTypeId) 
    SELECT startTime,endtime,1; 

    SELECT @newQId := MAX(QuizId) from QUIZ LIMIT 1; 

    SELECT @userId,@buddyID,@newQId; 

    /* UPDATE usertoken SET QuizStatusName='Completed',[email protected] where ([email protected] and [email protected]) OR ([email protected] and [email protected]); */ 
    UPDATE usertoken SET QuizStatusName='Completed',[email protected] where UserId=45; 
    UPDATE usertoken SET QuizStatusName='Completed',[email protected] where UserId=46; 

// Some Statements 

END IF; 

SET @userId = NULL; 
SET @questions = NULL; 
SET @answers = NULL; 
SET @buddyID = NULL; 
SET @startTime = NULL; 
SET @endtime = NULL; 
SET @QID = NULL; 
SET @AID = NULL; 
SET @n = NULL; 
SET @newQMId = NULL; 
SET @newQId = NULL; 
SET @QuizId = NULL; 

END 
+0

あなたの手続きのスニペットを共有できますか?あなたのクエリはきれいです。 – Sanghita

+0

SP内の2つのUPDATEクエリは、コメントアウトされた同じUPDATEクエリではありません。 – olegsv

+0

私は別の更新クエリを試しましたが失敗しました..特定の行を更新するのではなく、テーブル全体を更新する更新プログラム –

答えて

0

...わからない、それが失敗してしまったが、私は、パラメータでストアドプロシージャは、同じユーザーID属性を持っていることを前提とする理由、それ、t.Id = nullを
(私の更新クエリを前置した後

、= '完了'

UPDATEのはUserTokenトン SETのt.StatusName ..原因トンUかもしれませんserId = 45およびt.BuddyId = 46)OR(t.UserId = 46およびt.BuddyId = 45)。

関連する問題