0

私は MYSQL で単純なストアド プロシージャを希望どおりに動作させようとして、一日中これに取り組んできました。これは私が使用しているストアド プロシージャです。

delimiter $$

CREATE DEFINER=`vhabot`@`%` PROCEDURE `Update_Players`(in uid VARCHAR(64), in cname varchar(45),in rank_name varchar(20), in clevel int, in defrank int, in cfaction varchar(15), in org varchar(100), in today date)
BEGIN
DECLARE Records INT;
DECLARE Updt bool DEFAULT 'TRUE';
SET SQL_SAFE_UPDATES=0;

SELECT COUNT(*) INTO Records FROM dim5players where TRIM(id) = TRIM(uid);
If Records = 0 THEN
INSERT INTO dim5players (id, `name`, rank_name, `level`, defender_rank_id, Organization, `Date`, Updated)
VALUES (uid,cname, rank_name, clevel, defrank, cfaction, org, today, Updt ); 
END IF;

UPDATE dim5players SET Updated=true WHERE `name` = TRIM(cname);

END$$

私がやりたいのは、 ID を持つ可能性のあるレコードのカウントを使用して、ID (主キー) が既に存在するかどうかを確認することだけです。カウントが 0 の場合、上記の入力パラメーターを使用してレコードを追加できます。

レコードが挿入されているかどうかに関係なく、名前の入力と一致する「名前」を持つすべてのレコードに、更新された列で「true」が指定されるようにします。

私が何をしても、更新された列の「真」の値が更新されることはありません。この SP のどこかが正しくありません。どこにあるのかわかりません。

4

1 に答える 1