💡 Auto Increment란 ?
Auto Increment는 데이터베이스에서 특정 컬럼에 자동으로 고유한 값을 증가시켜 주는 기능입니다. 주로 기본 키(Primary Key) 컬럼에 사용되며, 새로운 레코드가 삽입될 때마다 자동으로 숫자가 증가하여 고유한 값을 생성합니다. 이 기능은 수동으로 값을 지정하지 않아도 되므로, 데이터베이스에서 레코드를 추가할 때 유용하게 사용됩니다.
✱ 특징
1) 자동 증가
- Auto Increment가 설정된 컬럼은 레코드가 삽입될 때마다 자동으로 값이 증가합니다. 보통 1씩 증가하지만, 증가 값을 설정할 수 있는 DBMS도 있습니다.
2) 유니크한 값
- Auto Increment를 적용하면 각 레코드가 고유한 값을 가지게 되어, 중복된 값을 방지할 수 있습니다.
3) 테이블의 기본키
- 주로 Auto Increment는 테이블의 기본 키(Primary Key)로 사용됩니다. 기본 키는 각 레코드를 유일하게 식별할 수 있어야 하기 때문에, 자동으로 고유한 값이 증가하는 Auto Increment 컬럼이 적합합니다.
🌟 기존 테이블에 존재하는 컬럼을 Auto Increment로 변경하기
방법1) SERIAL 타입으로 변경하기
ALTER TABLE member
ALTER COLUMN user_no SET DATA TYPE SERIAL;
방법 2) 시퀀스 직접 추가
CREATE SEQUENCE member_user_no_seq;
ALTER TABLE member
ALTER COLUMN user_no SET DEFAULT nextval('member_user_no_seq');
ALTER SEQUENCE member_user_no_seq OWNED BY member.user_no;
🚨 트러블 슈팅
🔍 오류 원인
저는 위의 방법 2를 통해 시퀀스를 직접 추가하는 과정에서 가장 마지막 줄에서 에러가 발생했습니다.
PostgreSQL에서 ALTER SEQUENCE ... OWNED BY를 실행하려면 시퀀스(member_user_no_seq)와 테이블(member)의 소유자(Owner)가 동일해야 합니다. 하지만 현재 시퀀스의 소유자와 테이블의 소유자가 다르기 때문에 오류가 발생한 것입니다.
✅ 해결 방법
1️⃣ 시퀀스와 테이블의 소유자 확인
먼저, 현재 테이블과 시퀀스의 소유자가 같은지 확인해야 합니다.
member 소유자 - shyunu
member_user_no_seq 소유자 - postgres
라고 나옵니다.
2️⃣ 시퀀스 소유자를 테이블과 동일하게 변경
member 테이블과 member_user_no_seq 시퀀스의 소유자가 다르다면, 시퀀스의 소유자를 테이블과 동일하게 변경해야 합니다.
3️⃣ 다시 OWNED BY 실행
이제 정상적으로 자동 증가(Auto Increment)를 적용할 수 있습니다! 🚀
'✨ Project > DangleDangle' 카테고리의 다른 글
[ DangleDangle ] 댕글댕글 서비스 로그인 구현하기 (0) | 2025.03.17 |
---|---|
[ DangleDangle ] 로그인 상태 관리 : sessionStorage를 활용한 로그인 처리 (0) | 2025.03.16 |
[ DangleDangle ] IntelliJ IDEA + postgreSQL 데이터베이스 연결하기 (0) | 2025.03.04 |
[ DangleDangle ] 예약 상태에 따른 화면 구현: 완료/대기/취소 (0) | 2025.02.24 |
[ DangleDangle ] React와 TypeScript로 별점 시스템 구현하기 🌟 (0) | 2025.02.23 |