다름이 아니라 다른 외부 인력을 통해서 DB를 설계를 했는데
제가 확인을 하다보니까 생소한 부분이 있어서요.
아직 학생티를 못벗은지라 잘 몰라서 여기 계신분들께 질문드릴께요
보통 레코드의 id값을 레코드가 하나씩 추가될 때마다 autoincreased된 쓰거나 아님 시퀀스로 증가된 값을 쓰는데요,
제가 받아본 구조에서는 각 테이블에서 증가된 가장 마지막 값을 보관하는 테이블을 따로 두더라구요.
예를들어 실제로 사용하는 테이블이 A,B,C가 있구요, 이외 테이블S가 있습니다.
테이블 S의 구조 및 내부 데이터는
tblName(VARCHAR), indexValue(BIGINT)
테이블A 10
테이블B 20
테이블B 30
요런식으로 되어있구요.
즉 테이블A에 값을 넣을때 아래와 같은 쿼리 순으로 진행이 되요
INSERT INTO tableA(idx, 솰라솰라) VALUES(
(SELECT indexValue FROM 테이블S WHERE tblName = '테이블A'), '솰라솰라');
UPDATE 테이블S SET indexValue = indexValue + 1
이런방식으로 총 두단계를 거쳐서 값을 넣고, 마지막값을 갱신하는데요.
저렇게까지 번거롭게 할 필요가 있나요?
그사람 말로는 mysql버그중에 autoincreased가 잘안되는 경우가 있다던데 제가보기엔 말도안되는 부분인 것 같거든요.
조언부탁드립니다 |