Je m'attendais à ce que cela échoue, mais à la place, il efface les données existantes et les remplace par une chaîne vide. Est-ce que c'est un comportement correct? Dans ce cas, est-il un travail autour de forcer une erreur à la placeUne tentative de mise à jour d'un champ CHAR NULL NOT NULL définit le champ sur une chaîne vide plutôt que d'échouer. Est-ce le comportement correct
Par exemple,
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);
Cela échoue avec l'erreur Code d'erreur: 1048. Colonne « Columna » ne peut pas être nulle qui est ce que j'attendais .
Cependant,
UPDATE testtable
SET columna = null WHERE columnb = '2';
remplace le contenu de columna avec une chaîne vide
Select * from testtable;
first entry 1
2
third entry 3