5. 자주 하는 실수 (Tip)
실수 1: 아무 뷰나 UPDATE 할 수 있다고 착각한다
2.3절에서 봤듯 뷰를 통한 UPDATE·INSERT 는 테이블 하나만 참조하고 집계가 없을 때만 실제 DB 에서 허용됩니다. 조인이나 GROUP BY 가 섞인 뷰는 실제 DB 도 거부하므로, 뷰 정의를 보고 조건을 만족하는지 먼저 확인해야 합니다.
실수 2: 시퀀스 번호가 빈틈없이 연속된다고 가정한다
2.7절·4절 변형3 에서 봤듯, 롤백이나 캐시 때문에 시퀀스·IDENTITY 값에는 구멍이 생길 수 있습니다. 세금계산서 번호처럼 "빈 번호 없는 연속 번호"가 필요한 업무라면 시퀀스가 아니라 별도의 채번 테이블과 락을 써야 합니다(실무 06).
실수 3: GENERATED BY DEFAULT 로 직접 넣은 값이 카운터에 반영된다고 착각한다
4절 변형2 에서 확인했듯, GENERATED BY DEFAULT AS IDENTITY 컬럼에 큰 값을 직접 넣어도 자동 채번 카운터는 그 값을 기준으로 당겨지지 않습니다. 자동 채번 값이 나중에 그 값과 겹쳐 충돌할 수 있어, 직접 지정은 되도록 피하거나 카운터를 함께 조정해야 합니다.
이는 Oracle IDENTITY 기준이고, Oracle 은 START WITH LIMIT VALUE 로 카운터를 맞춥니다. MySQL AUTO_INCREMENT 와 MSSQL IDENTITY 는 더 큰 값을 직접 넣으면 카운터가 그 값을 따라갑니다.