我原本预计会失败,但它会擦除现有数据并用空字符串替换它。这是正确的行为吗?如果是,是否有工作来强制错误
例如
CREATE TABLE testtable
(columna VARCHAR(30) NOT NULL,
columnb VARCHAR(2) NULL,
columnc VARCHAR(10) NULL);
INSERT INTO testtable (columna, columnb, columnc)
VALUES ('first entry', '1', null),
('second entry', '2', null),
('third entry', '3', null);
INSERT INTO testtable (columna, columnb, columnc)
VALUES (null, '4', null);
失败并出错 错误代码:1048。列'columna'不能为空 这就是我所期待的。
然而,
UPDATE testtable
SET columna = null WHERE columnb = '2';
用空字符串替换columna的内容
Select * from testtable;
first entry 1
2
third entry 3
答案 0 :(得分:0)
已经发现这是sql模式。 通过设置
SET GLOBAL sql_mode = 'TRADITIONAL';
数据库现在可以正常工作,并拒绝无效值。