创建函数mysql

时间:2017-08-19 06:40:43

标签: mysql sql

我正在使用

CREATE FUNCTION UPDATEGames(usernameIN CHAR(15) ,opponientIN CHAR(15) ,mFilePath TINYTEXT,oFilePath TINYTEXT)
BEGIN
UPDATE games  
IF (username = opponientIN AND FilePath = oFilePath) THEN SET opLastTurn = NOW(),Turn=Turn+1 
ELSEIF (username = usernameIN AND FilePath = mFilePath) THEN SET myLastTurn = NOW(),Turn=Turn+1 
END IF 
END;

但它没有用,我错了什么?如果不可能这样做那么我怎么能模拟这个逻辑呢?

1 个答案:

答案 0 :(得分:1)

在更新中,您只能使用if 功能,而不能使用if 语句。 if语句只能用于执行不同的sql语句。此外,必须在where中使用update条件来限制要更新的记录。

因此,根本不需要使用if语句,只需使用两个更新。也没有返回值,所以我也将功能改为过程。

DELIMITER //
CREATE PROCEDURE UPDATEGames(usernameIN CHAR(15) ,opponientIN CHAR(15) ,mFilePath TINYTEXT,oFilePath TINYTEXT)
BEGIN
    UPDATE games SET opLastTurn = NOW(),Turn=Turn+1 WHERE username = opponientIN AND FilePath = oFilePath;
    UPDATE games SET myLastTurn = NOW(),Turn=Turn+1 WHERE username = usernameIN AND FilePath = mFilePath;
END//
DELIMITER ;