sách gpt4 ai đã đi

mysql - 列不能为空 - 过程

In lại 作者:行者123 更新时间:2023-11-29 06:58:26 31 4
mua khóa gpt4 Nike

Tôi đang cố gắngMySQL中创建一个过程那chèn 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
)

为什么首先trong khi迭代一切正常(行已添加),但在下一次迭代中我得到 vô giá trịgiá trị @weekNumber变量?

1 Câu trả lời

ĐƯỢC RỒI:

SET @startOfCurrentWeek = @endOfCurrentWeek + 1;

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

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

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

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com