gpt4 book ai didi

MYSQL "create match on X date if team A and team B are free"使用过程和事务

转载 作者:行者123 更新时间:2023-11-29 19:44:59 24 4
gpt4 key购买 nike

所以我想更多地了解 MySQL,我得到了这个练习来处理过程和事务。内容如下:

“创建一个名为scheduleMatch 的MySQL 过程,用于安排锦标赛中的比赛。

该过程应使用以下参数:

  • 比赛名称
  • 主队名称
  • 客队名称
  • 比赛日期

该过程的工作原理是首先安排(创建)主队和客队在给定日期之间的比赛。为了做到这一点,程序必须确保两队在给定日期都有空。 ”

然后我们就用这个语法来调用它。

CALL ScheduleMatch('锦标赛1', 'TeamA', 'TeamB', '2015-11-08');

delimiter $$

create procedure schedulematch(IN tournamentName_param varchar(40), IN HomeTeamId_param varchar(40),
IN AwayTeamId_param varchar(40),IN matchDate_param date)
BEGIN

DECLARE success_entry BOOL DEFAULT TRUE;

SET success_entry = TRUE;

start Transaction;

IF NOT EXISTS (select * from match where MatchDate = MatchDate_Param AND HomeTeamId = HomeTeamId_Param AND AwayTeamId = AwayTeamId_Param) THEN
insert into match values
(NULL, matchDate_Param, fetch_teamID(HomeTeamId_param),fetch_teamID(AwayTeamId_param), 0, 0, 0 , 0);
SELECT 'match Added ' AS MESSAGE;
commit;
else
rollback;
end if;


end$$

delimiter ;

CALL scheduleMatch(‘Tournament1’, ‘TeamA’, ’TeamB’, ‘2015-11-08’);

我认为上面的内容会起作用,但它仍然运行插入语句。任何帮助,将不胜感激!

我正在寻找有关此问题的一些教育,而不仅仅是答案!

最佳答案

您可以使用 INSERT INTO .. SELECT FROM 构造并使用 WHERE NOT EXISTS 来更改 IF NOT EXISTS 部分,例如

insert into `match`
SELECT NULL, matchDate_Param, fetch_teamID(HomeTeamId_param),
fetch_teamID(AwayTeamId_param), 0, 0, 0 , 0,
'match Added ' AS MESSAGE
FROM DUAL
WHERE NOT EXISTS (select 1 from `match`
where MatchDate = MatchDate_Param
AND HomeTeamId = HomeTeamId_Param
AND AwayTeamId = AwayTeamId_Param);

关于MYSQL "create match on X date if team A and team B are free"使用过程和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41082741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com