DB관련 작업한지 좀 오래되어서. ㅠㅠ
기본적인 콤포넌트 쓰는방법에도 크게 3가지 정도가 있는걸로 알고 있습니다.
SQL의 내용이 전혀 없는걸로 보아서는 아마도 자동으로 필드를 넣어서 하신게 아닌가 생각되네요..
그게 뭐였더라.. updateSQL 인가? 맞나요? TQUery 에 더블클릭인가? 필드를 쭈~~욱 넣어서 만들기도 하죠?
문제는 이렇게들어간건 자동으로 sql을 만들어 낼때 해당 필드를 넣습니다.
그러니까..
자동 증가 필드는 insert문에 존재하면 안됩니다.
insert into aa <-- 자동증가, bb valus ( '', 5 ) 이렇게 넣으면 안되죠
insert into bb values( 5 ) 이렇게만 들어가야 하죠.
즉 값을 0으로 넣든 아무것도 넣지 않던 sql은 넣을려고 하게되고 이러면 오류를 발생시킵니다.
아마 제 생각에는 이것때문이 아닌가 생각되네요.
어떤방식으로 쓰셧든 내부에 TFields 가 있거나 혹은 sql문을 적어준곳이 있다면 모두 확인해 보시고 해당필드를 삭제해 주시면 아마 제대로 동작할껍니다.
그럼..
박태성 님이 쓰신 글 :
: 파이어버드 2.1과 델파이 7로 간단한 디비프로그램 짜는걸 연습중입니다.
:
: 지금 연습중인게 간단한 회원테이블이 있고
: (회원ID는 not null 제약을 주고 gen_id로 자동증가된 값을 넣어주게끔 트리거도 걸어주었습니다)
:
: 델파이 폼에서 델파이폼에서 디비네비게이터와 DBEdit 컴포넌트를 내려놓고 제우스컴포넌트(6버전)와 연결시켜
: 회원 입력 수정 삭제하는 간단한 프로그램입니다. 수정, 삭제는 잘 되는데 신규입력시 에러가 납니다.
: 메시지내용을 봐서는 ID필드가 필수인데 널값이 넘어와서 저장을 할수 없다는 말인것 같습니다.
:
: id가 자동증가값이므로 필드에 아무값도 넣지 않고 저장버튼을 눌렀습니다.(id값을 입력하는 DBEdit컨트롤을
: 없애도 해봐도 마찬가지이고 DBEdit에 임의 값을 넣고 저장을 누르면 제대로 저장이 됩니다-물론 테이블을
: 직접보고 회원id중 중복되지 않는 제일 큰 정수값을 넣어주었습니다)
:
: 혹시 트리거가 제대로 작동하지 않아서 그런가 싶어서 IBConsole상에서 insert into 구문으로 값을 저장하면
: 제대로 작동을 하더군요
:
: 트리거 구문을 보면 id값이 Null이면 gen_id함수를 통해 값을 받아와서 테이블에 입력하게 하는거라서
: DBEdit컨트롤에는 값을 안넣어주는게 맞는거 같은데 어떻게 해야할지를 모르겠습니다.
:
: 이질문을 코드웨이 게시판에 남겼었는데 Lyn님이 댓글로 DBEdit에 트리거를 연결해 보라고 하시는데
: 여기 저기 속성값을 보면 해당하는 항목이 없는것 같네요. 어떻게 연결해야하는지 좀 아시는분 계시면
: 알려주시면 감사하겠습니다.
: (이벤트에 코드로 작성해야 하는건지 그렇게 하는게 답이라면 데이타베이스에 굳이 트리거를 만들어주는
: 의미가 없어지는것 같은데 참 헷갈리네요. 그리고 류종택님 동영상강좌에서 보면 BDE와 파라독스를
: 이용해서 만드는 간단한 디비프로그램에서는 자동증가값이 바로 DBEdit컨트롤에 나타나는것 같던데
: 파이어버드는 안되는건지도 궁금합니다)
:
: 델파이 지식도 많이 짧고 영어실력도 많이 짧아 제대로 된 참고문서를 찾기가 힘드네요
: 알려주시면 감사하겠습니다.
|