2011-08-31 3 views
2

두 개의 테이블이 있다고 가정 해 보겠습니다. 직렬 데이터 형식을 외래 키로 사용

첫 번째

은 다음과 같습니다 list_id로 SERIAL, LIST_NAME 텍스트 표,

두 번째 테이블, 사소 목록이 공개 경우 말했다 테이블 : 분명히

조금 INT

is_public list_id로의 INT, 그러나 나는 테이블을 계획하고 있는데 이것이 문제인 것처럼 보인다. 새 list_name을 테이블 목록에 삽입하면 새 일련 번호가 생깁니다 ...하지만 이제는 두 번째 테이블에서 해당 일련 번호를 사용해야합니다. 이 경우 분명히 첫 번째 테이블에 is_public을 추가 할 수 있지만 복합 키가있는 연결 목록의 경우 반환 된 일련의 값을 알아야합니다.

사람들은 보통 어떻게 처리합니까? 그들은 데이터베이스와 상호 작용하는 시스템을 사용하여 삽입물에서 반환 유형을 얻나요? 이런 종류의 물건에

답변

2

한 가지 방법은 다음과 같습니다 첫 번째 테이블에

INSERT는 "값이 가장 최근에 획득 얻기 위해 lastval()를 사용 모든 시퀀스에 대해 nextval "(현재 세션)을 입력 한 다음 해당 값을 사용하여 n ext INSERT.

INSERT ... RETURNING있다 :

옵션 RETURNING 절은 INSERT가 계산됩니다 각 행에 따라 반환 값 (들) 실제로 삽입. 이것은 일련 번호와 같이 기본값에 의해 제공된 값을 얻는 데 주로 유용합니다. INSERT ... RETURNING id를 사용

은 기본적으로 그래서 당신은 할 줄 하나에 위의 처음 두 단계를 결합 : 두 번째 INSERT가 id가에서 반환 된 사용합니다

  • INSERT ... RETURNING id
  • INSERT ...

최초의 INSERT

+0

화려 함, 고맙습니다. –

관련 문제