2013-02-26 4 views
0

실패 할 것으로 예상했지만 대신 기존 데이터를 지우고 빈 문자열로 바꿉니다. 이것은 올바른 행동입니까? 내가 무엇을 기대되는 1048 열 'COLUMNA가' null 일 수 없습니다 :이 경우, 작업은NOT NULL var char 필드를 업데이트하려고하면 필드가 실패하지 않고 빈 문자열로 설정됩니다. 이 올바른 동작입니까

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

이 오류 오류 코드와 함께 실패 오류 대신

예를 강제로 주위가 . 그러나

,

UPDATE testtable 
SET columna = null WHERE columnb = '2'; 

Select * from testtable; 

first entry 1 
      2 
third entry 3 

답변

0

이 아래로 SQL 모드 것으로 나타났습니다 빈 문자열로 COLUMNA의 내용을 대체합니다.

SET GLOBAL sql_mode = 'TRADITIONAL'; 

데이터베이스를 설정하여 지금 내가 기대 한 것처럼 작동하고 잘못된 값을 거부합니다.