안드로이드 개발 질문/답변
(글 수 45,052)
primary key 값으로 System.currentTimeMillis() 로 할려고 하는데...
문제가 일어날 여지가 있나요?
다른 앱과 연결이 안되고 네트워 사용하지 않습니다. 자기 자신만 사용합니다.
그리고 다음 insert까지 약 1~2초정도의 여유가 있습니다.
만약 문제가 생길수 있다면 어떤 문제가 생길수 있나요?
2012.08.29 12:14:45
각 단말 혹은 시스템마다 시간의 오차는 분명히 있습니다. 예를들어 A시스템에서는 현재시각이 3초라고 가정하고
B시스템은 1초라고 가정하겠습니다. A시스템에서 insert를 시키고 난후 B시스템에서 2초후에 insert 시킬경우 중복에러가 발생하는것이죠.. 이런식으로 절대적값이 아닌 상대적값으로는 PK를 사용하지 않습니다.
PK를 Integer 1부터 1++ 시키는 컬럼으로 만드시고, Index를 System.currentTimeMillis() 을 사용하는것을 추천드립니다.
검색할경우에는 Index를 뒤져서 해당 PK값들을 뽑게되면 속도차이가 월등히 빨라지게 됩니다.




PK 의 경우 고유 numbering 을 해야하는데... 문제는 System.currentTimeMillis() 의 경우 중복의 소지가 분명하므로 안쓰는것이 맞습니다.
PK의 컬럼의 내용이 겹칠경우 PK위반 오류를 반출하며 insert가 이루어 지지 않습니다.