我读了很多不同的文章,试图弄清楚为什么我的代码不起作用,但是这里的目标是在“标记”列低于69时将“名称”列的值设置为null。是:
CREATE PROCEDURE gradesReport()
BEGIN
SELECT name FROM students WHERE mark > 69;
UPDATE students SET name = NULL WHERE mark < 69;
END
第一个语句工作正常,但随后出现错误,即列名不能为空。
答案 0 :(得分:1)
可能name
列被声明为非空
您首先应该将其更改为NOT NULL
列
ALTER TABLE students
CHANGE `name` varchar(255) NULL;
答案 1 :(得分:0)
这是使列在MySQL中可为空的另一种方法:
ALTER TABLE students MODIFY name VARCHAR(255);
在MySQL中,列默认为空,因此我们实际上不需要在alter语句中指定NULL
。