为什么这不起作用?
问题: 2.创建事务以进入新锦标赛。此事务处理将执行以下步骤:
a.检查具有ID 20和锦标赛位置‘图腾车道’的锦标赛是否被插入到表‘锦标赛’(1分)中。
b.如果有一个记录,ID为20,‘2016-11-29’巡回赛日期和‘图腾车道’巡回赛位置的锦标赛被输入到‘锦标赛’表中(1分)。
c.回滚事务结束时的所有更改(1分)。
代码:
/* Question 2 */
START TRANSACTION;
IF EXISTS SELECT *
FROM Tournaments
WHERE TourneyID = 20 and TourneyLocation = 'Totem Lanes'
IF EXISTS SELECT *
FROM Tournaments
WHERE TourneyID = 20 and TourneyDate = '2016-11-29' and TourneyLocation = 'Totem Lanes';
ROLLBACK;发布于 2019-07-20 05:58:28
我对您所说的解释是,如果在桌上锦标赛中存在ID为20、位置为“图腾车道”的锦标赛记录,则插入ID为20、位置为“图腾车道”的锦标赛记录和位置为“2016-11-29”的巡回赛记录。这听起来有点胡说八道,但我会这样做:
SET AUTOCOMMIT=0;
INSERT INTO Tournaments(TourneyID, TourneyDate, TourneyLocation)
SELECT 20, '2016-11-29', 'Totem Lanes' FROM DUAL WHERE EXISTS (
SELECT * from Tournaments WHERE TourneyID = 20 AND TourneyLocation = 'Totem Lanes'
)
;
ROLLBACK;这是一种使用WHERE子句执行条件插入的方法。WHERE子句位于SELECT语句上,该语句必须为要插入的列提供值。在本例中,由于这些值是常量,因此它们是从MySql虚拟表DUAL中选择的。
https://stackoverflow.com/questions/45537470
复制相似问题