초보 님이 쓰신 글 :
: 기초코드 저장하는 테이블을 만들었습니다.
:
: N개의 기초 테이블 중에 유독 한군데서 이런 문제가 있습니다.
:
: 제가 SQL.Text := ' Insert (....) Values (....)'
:
: 그리고 ParamByName(...).AsString := xxx;
:
: 이런 식으로 작성해서 저장하구요.
:
: 저장이 잘 될때는 잘 됩니다.
:
: 그런데 어쩔때는 필드값에 Null이 들어갑니다. 이건 ibexpert에서 확인한 결과입니다.
:
: 제가 분명히 코딩할때 '0'아니면 '1'값을 넣어주거든요.
:
: CheckBox.Checked 를 체크해서요.
:
: 또 문자열도 하나 넣는데... ibexpert에서 말하는 empty string 이라도 들어가야 하는데 가끔 Null로 되어 있습니다.
:
: 문제가 되는 이 테이블에서도 6~7개의 필드중에 유독 2개의 필드만이 이런 경우가 나타납니다.
:
: 그것도 가끔이요.
:
: 개발 및 사용 환경은: windows xp, firebird 2.1.x tcp/ip, delphi 2007, ibdac 2.50.x 이렇게 되어 있습니다.
:
: 혹시 저와같이 특정 필드에 데이터가 안들어간 경우가 있으셨던분은 말씀해 주세요.
:
: 감사합니다.
안녕하세요. 까막입니다.
다른 입력 루틴이 존재하는지 체크를 해보시지요.
그리고, 보다 근본적인 문제.
NULL 이 존재해선 안된다면, Field 속성에 NOT NULL 을 주셔야지요.
사람이 아무리 똑똑해도 실수 할 가능성은 항상 존재하는 법입니다.
그 실수를 막기위해서는 제약 조건을 검토하여 적절하게 처리하는 수 밖에 없죠.
DB 구조를 보면 PK, FK, CK 등을 무시하고 그냥 구성한 시스템을 많이 보게 되는데요.
그런 구조의 DB 에서 문제가 생기지 않은 곳은 본 적이 없습니다.
일단 NOT NULL 을 걸어 주시고.
그 후에 어떤 경우에 어떤 부분에서 오류가 발생하는지 점검해 보시길...
위대한 단군혼이 살아있는 나라.... 대한민국.
|