在 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
您可以尝试在下面添加而不是使用
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();