MySQL/MariaDB 从函数创建多个插入

问题描述 投票:0回答:1

在 SQL 函数中,我想根据传递到函数中的参数创建多条记录,例如,该函数采用成员主 ID、日期/时间戳和指定要创建的记录数的数字。

我当然可以创建一个循环来执行插入,但是我很好奇是否有办法让服务器引擎自动创建特定数量的记录?

到目前为止我的职能:

CREATE DEFINER=`root`@`localhost` FUNCTION `reserveTickets`(idMbr BIGINT(11),                                                          
                           dtWhen DATETIME, intTickets INT(11)) RETURNS int(11)
BEGIN
/*Is member id valid?*/ 
    DECLARE idMbrVerified BIGINT(11);
    SELECT id INTO idMbrVerified FROM tblMembers WHERE id=idMbr;
    IF ISNULL(idMbrVerified) THEN 
        RETURN 0;
    END IF;    
/*Is date/time valid, can't be older that 60 seconds?*/
    IF SECOND(TIMEDIFF(NOW(), dtWhen)) > 60 THEN
        RETURN 0;
    END IF;
/*Is the number of tickets valid, must be at least 1?*/    
    IF intTickets <= 0 THEN
        RETURN 0;    
    END IF;
    
    RETURN 1;
END
sql mysql stored-functions
1个回答
0
投票

您可以尝试在下面添加而不是使用

RETURN 1;
吗?

WITH RECURSIVE numbers AS (
 SELECT 1 AS number
 UNION ALL
 SELECT number + 1 FROM numbers WHERE number < intTickets
 )
INSERT INTO tblTickets(member_id, timestamp)
SELECT idMbr, dtWhen
FROM numbers;
RETURN ROW_COUNT();
© www.soinside.com 2019 - 2024. All rights reserved.