sql server와 다르게 좀 복잡하다.
많이 헤멨다.
구글링 해본 결과 테이블 생성할 때
이렇게 나와있는데 이렇게 하게 되면 no 의 값은 integer가 된다. 편하다.
근데 난 no 가 integer보단 bigint가 되길 원했다.
이 글을 쓰면서 컬럼 값 integer를 bigint로 변경해도 되겠구나.. 라고 생각이 났다.
여하튼 구글링을 더 해 본 결과 다른 방법을 찾았다.
Postgres는 sequence라는 일종의 procedure를 이용해서 번호를 자동증가하게 한다.
그래서 sequence를 만들어보자.
여기서..
1. Table를 생성할 때.
2. 기존 테이블에 적용할 때. 이 두가지 경우를 가지고 생각해 보다.
1. Table를 생성할 때
** regclass는 잘 모르겠다. 일단 붙혀도 되고 안 붙혀도 된다. postgresql 9.0 기준이다.
2. 기존 테이블에 추가할 때.
이상이다.
참고로 알아둬야 할 것이 있다.
SEQUENCE는 전역변수로 작동한다
즉 하나의 DATABASE에 모든 테이블의 no 값은 유일하다는 것이다. 새로운 테이블을 생성을 하던 기존 테이블을 삭제를 하던간에 최근의 값에 +1을 하게 된다.
많이 헤멨다.
구글링 해본 결과 테이블 생성할 때
create table table_name( no serial ) |
이렇게 나와있는데 이렇게 하게 되면 no 의 값은 integer가 된다. 편하다.
근데 난 no 가 integer보단 bigint가 되길 원했다.
이 글을 쓰면서 컬럼 값 integer를 bigint로 변경해도 되겠구나.. 라고 생각이 났다.
여하튼 구글링을 더 해 본 결과 다른 방법을 찾았다.
Postgres는 sequence라는 일종의 procedure를 이용해서 번호를 자동증가하게 한다.
그래서 sequence를 만들어보자.
CREATE SEQUENCE auto_increment_seq |
여기서..
1. Table를 생성할 때.
2. 기존 테이블에 적용할 때. 이 두가지 경우를 가지고 생각해 보다.
1. Table를 생성할 때
CREATE TABLE table_name( no bigint NOT NULL DEFAULT nextval('auto_increment_seq'::regclass) ) |
** regclass는 잘 모르겠다. 일단 붙혀도 되고 안 붙혀도 된다. postgresql 9.0 기준이다.
2. 기존 테이블에 추가할 때.
UPDATE table_name SET no = NEXTVAL('auto_increment_seq') |
이상이다.
참고로 알아둬야 할 것이 있다.
SEQUENCE는 전역변수로 작동한다
즉 하나의 DATABASE에 모든 테이블의 no 값은 유일하다는 것이다. 새로운 테이블을 생성을 하던 기존 테이블을 삭제를 하던간에 최근의 값에 +1을 하게 된다.
'나는개발자다 > 기타' 카테고리의 다른 글
Log4J 간단 사용 정리. (2) | 2011.07.18 |
---|---|
Java JUnit를 이용 객체 비교하기. (0) | 2011.07.07 |
우분투 11.04 PostgreSQL 9.X 설치하기. (1) | 2011.06.09 |
우분투 11.04 Java 설치하기 (0) | 2011.06.09 |
우분투 11.04 FTP 서버 설치하기. (0) | 2011.06.08 |