테이블이 다음과 같습니다.
customer.db
fieldname type
----------------------
id + *
name A
post A
address A
위와 같고, id를 key로 설정하였습니다.
customer.db를 ttable, tdatasource, tdbedit 로 연결하였는데
자료를 추가하면 가끔씩 key violation 오류가 납니다.
id가 autoincrease로 되어 있는데도 이런 현상이 가능한가요?
전 전혀 예상치 못했는데.....
프로그램이 중간에 다운되어서 트렌젝션이 불안전하게 종료되어 그런가요?
> 테이블이 다음과 같습니다.
> customer.db
> fieldname type
> ----------------------
> id + *
> name A
> post A
> address A
>
> 위와 같고, id를 key로 설정하였습니다.
> customer.db를 ttable, tdatasource, tdbedit 로 연결하였는데
> 자료를 추가하면 가끔씩 key violation 오류가 납니다.
> id가 autoincrease로 되어 있는데도 이런 현상이 가능한가요?
> 전 전혀 예상치 못했는데.....
> 프로그램이 중간에 다운되어서 트렌젝션이 불안전하게 종료되어 그런가요?
이재식 Wrote :
안녕하십니까?
패러독스에서는 +타입이라하여 자동증가 필드형이 있죠.
이것을 주키로 설정하셨네요.
이 필드는 말그대로 자동증가필드타입이라
수정이나 삽입때 전혀 건드릴 필요가 없는 것입니다.
자신이 알아서 자체적으로 일련번호식으로 정리를 하죠.
아직까지 이 필드에대한 에러를 발견하지 못했습니다.
귀하께서 말씀하신대로 트랜잭션의 불완전한 종료가
이러한 현상을 유발했을 거라 생각됩니다.
가령, post명령어로 저장을 했다고 합시다.
그런데, 실제로는 post명령어는 테이블에 저장을 하지 않습니다.
왜냐하면, post명령어를 수행했어도, 다시 프로그램을 종료한뒤
Tool을 이용해서 테이블을 닫은뒤 다시 열어보면
여전히 데이터는 존재하지 않습니다.
이런경우가 있을 것입니다.
즉, 물리 DB에 실제 저장은 dbiSaveChange라는 BDE함수내지
어떤 내부적 명령어가 수반된다는 얘기죠.
그리고, ExecSQL역시 마찬가지입니다.
패러독스에서도 확실히 저장하려면 commit가 수반되어야
하는 것이죠.
사용자가 그 자동증가 필드를 건드리지 않는다면(건드릴 필요도 없지요!1)
이 필드 자체에서는 문제가 없을 거라 생각됩니다.
그럼...