我整天都在工作,试图让一个简单的存储过程在 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,那么我可以使用上面的输入参数添加记录。
无论是否插入记录,我都希望所有具有与名称输入匹配的“名称”的记录在更新的列中都被赋予“真”。
无论我做什么,它都不会更新更新列中的“真实”值。在这个 SP 的某个地方有些地方不对劲。我只是不确定它在哪里。