2013-02-26 1 views
0

Я бы ожидал, что это сработает, но вместо этого он вытирает существующие данные и заменяет их пустой строкой. Это правильное поведение? Если да, то есть работа вокруг, чтобы заставить ошибку вместоПопытка обновить поле NOT char NULL var задает поле пустой строке, а не сбой. Это правильное поведение

Eg

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'; 

заменяет содержимое Колумна с пустой строкой

Select * from testtable; 

first entry 1 
      2 
third entry 3 

ответ

0

обнаружили, что это вниз в режиме SQL. Устанавливая

SET GLOBAL sql_mode = 'TRADITIONAL'; 

к базе данных теперь работает, как я ожидал бы и отклоняет недопустимые значения.

 Смежные вопросы

  • Нет связанных вопросов^_^