728x90

Table 구조가 아래와 같을때

key_field  : auto_increment
field(1)
...
field(n)


Key Field를 auto_increment 형태로 하여, Insert를 하던 중

select 문을 이용하여 Where 조건에 key_field 값을 넣었을때, Record가 한개도 존재하지 않는다면, 이경우 이 Data는 원래부터 Insert 되지 않았던 Data였을까? 아니면 Insert후 Delete된 Data일까?

처음엔 간단하게 Max(key_field) 값을 가지고, Key_Field의 Max값보다 작으면 삭제된 데이터,
Key_Field의 Max값보다 큰 값이면, 원래부터 존재하지 않았던 데이터로 구분하면 되지 않을까?
라고 생각했는데, 다시 생각해보니 틀린 생각.

key field field 1 ... key field n
1 data ... data
2 data ... data
3 data ... data
...
98 data ... data
99 data ... data
100 data ... data

위와 같을때, "select max(key field) from 테이블명"을 하게 되면 100이 나오므로, 정상적인 결과를 얻을 수 있겠지만,
99, 100번 레코드를 삭제한후 "select max(key field) from 테이블명"을 하게되면 max값은 98이 나오므로, 실제로 99와 100번 레코드의 경우는 삭제되었음을 알지 못하고, 이전에 입력이 되지 않았던 데이터로 분류되게 된다.

key Field가 Auto_increment 속성을 가지고 있으므로,

show table status where name = '테이블명' 을 이용하면 해당 Table의 Auto_Increment 값을 확인 할 수 있으므로, 이를 이용하여 처리하면 된다.

어쨌든, 설명이 장황한데.... 결론은 결국 원하는 Table의 Auto_Increment 값을 가져오고자 할때 어떻게 할 것인가? 이므로, 위의 사설은 다 집어치우고,
기억해야할 쿼리는 단 한가지.

show table status where name = '테이블명'
728x90

'프로그래밍 > php' 카테고리의 다른 글

php 시간 계산  (0) 2013.08.12
PHP $_SERVER 정리  (0) 2013.08.01
ORACLE, MSSQL, MYSQL 날짜함수 비교  (0) 2012.08.08
php 한글 연동 시 한글 깨짐현상 복구법  (0) 2012.07.06
php Ajax 한글 처리  (0) 2012.04.20

+ Recent posts