PostgreSQL 은 자동증가값이라는 것은 필드의 속성이 아닙니다. (mysql은 auto_increment 라는 필드 속성을 부여하면 자동으로 1씩 증가하는 필드가 만들어지지요) PostgreSLQ 의 경우에는 Sequence 라고 하는 특수한 객체를 이용합니다. 이 sequence 라는 것은 일종의 테이블인데 한번 nextval 이라는 함수와 같이 call 을 하게 되면 자동으로 1씩 증가되는 그런 객체이지요.
실제로 다음과 같이 사용합니다.
CREATE SEQUENCE student_no INCREMENT 3 START 1000;
// nextval 이라는 함수를 이용해서 이 sequence 를 호출하면 start_value 부터
// INCREMENT 만큼 증가된 값을 돌려 준다.
SELECT nextval('student_no');
// student_no 라는 sequence 객체가 어떻게 만들어 졌는지 보기 위해서...
SELECT student_no;
그리고 CREATE TABLE test (a serial, b text); 라고 하는 구문은 다음과 같이 선언됩니다.
CREATE SEQUENCE a_seq;
CREATE TABLE test (a int default nextval('a_seq'), b text);
이해가 가셨는지 모르겠습니다.
>>
yundream 님께서 쓰시길<<
::
:: mysql 에서는 autoencrement 를 쓰는데.
:: pgsql 의 serial 과는 약간 틀리군요..
::
:: mysql 은 단순히 현재 필드의 max 값에
:: 1을 더해주는 것이라서,
:: 실질적으로 유니크한 값을 만들어주지는
:: 못하는데에 비해,
::
:: serial 은 말그대로 serial, 유니크한 값을
:: 돌려주는 군요..
::
:: 이를테면 mysql 에서는 2번이 멕스일때..
:: 이걸 지우고 새로운 insert 가 일어나면,
:: 1+1 = 2 가 되는데,
:: pgsql 에서는 3이 되는군요..
:: 편하군요 //;
|