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
あなたの手続きのスニペットを共有できますか?あなたのクエリはきれいです。 – Sanghita
SP内の2つのUPDATEクエリは、コメントアウトされた同じUPDATEクエリではありません。 – olegsv
私は別の更新クエリを試しましたが失敗しました..特定の行を更新するのではなく、テーブル全体を更新する更新プログラム –