gpt4 book ai didi

mysql - 列不能为空 - 过程

转载 作者:行者123 更新时间:2023-11-29 06:58:26 31 4
gpt4 key购买 nike

我正在尝试在MySQL中创建一个过程那insert week s(当年)发送至我的 week table 。但存在一个问题,因为在为下一行添加第一行后,我收到错误: number column cannot be null 。我是 MySQL 的新手所以我将不胜感激任何帮助。

CREATE PROCEDURE generateWeeks()
BEGIN
SET @currentYear = YEAR(CURDATE());
SET @nextYear = @currentYear + 1;

SET @startOfCurrentWeek = CURDATE();

WHILE(@currentYear < @nextYear) DO
SET @endOfCurrentWeek = DATE_ADD(@startOfCurrentWeek , INTERVAL 7 DAY);
SET @weekNumber = WEEK(@startOfCurrentWeek, 3) -
WEEK(@startOfCurrentWeek - INTERVAL DAY(@startOfCurrentWeek)-1 DAY, 3) + 1;
INSERT INTO `week` (`number`, `start_date`, `end_date`)
VALUES (@weekNumber, @startOfCurrentWeek, @endOfCurrentWeek);
SET @startOfCurrentWeek = @endOfCurrentWeek + 1;
SET @currentYear = YEAR(@endOfCurrentWeek);
END WHILE;
END //
DELIMITER ;

编辑:表创建:

CREATE TABLE `week` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`number` INT(11) NOT NULL,
`start_date` DATE NOT NULL,
`end_date` DATE NOT NULL
)

为什么首先while迭代一切正常(行已添加),但在下一次迭代中我得到 null@weekNumber变量?

最佳答案

行:

SET @startOfCurrentWeek = @endOfCurrentWeek + 1;

会将变量转换为整数。请改用 date_add。

此外,最好使用局部变量(声明 v_endOfCurrentWeek 日期),而不是使用用户定义的变量 (@endOfCurrentWeek)。

关于mysql - 列不能为空 - 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44654203/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com