为什么这不起作用?
问题: 2.创建一个交易以进入新的锦标赛。此交易将执行以下步骤:
一个。检查具有ID 20和锦标赛位置'Totem Lanes'的锦标赛是否是 插入表'锦标赛'(1分)。
湾如果有记录,比赛有ID 20,'2016-11-29'Tourney Date和'Totem Lanes'Tourney位置进入表'锦标赛'(1分)。
℃。在事务结束时回滚所有更改(1分)。
CODE:
/* 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;
答案 0 :(得分:0)
我对您所说内容的解释是,如果在桌上锦标赛中存在ID为20且“ Totem Lanes”位置的比赛的锦标赛记录,请插入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中选择它们。