2011-01-07 7 views
1

uid이라는 자동 증가 정수 필드를 기존 테이블 assoc에 추가하고 싶지만 기본 키가 아니면 그렇게 할 수없는 것처럼 보입니다.sqlite : 어떻게 기존 테이블에 자동 증가 ID를 추가 할 수 있습니까?

나는 필드 local_idremote_id이있는 기존의 기본 키 쌍, 그리고 내가 어떻게 그 나는 INSERT OR IGNORE INTO assoc 그래서 나는 중복 된 기본 키를 얻을하지 않습니다 수 있도록,하지만 난 기본 키 열 한 쌍의가있는 경우 , 나는 그것들을 업데이트 (see other SO question)로 사용할 수 없다.

사람이 테이블을 재구성하는 방법을 제안 할 수 (및 구현하는 구조 조정 ALTER TABLE 사용) 내가 필요로하는 동작을 얻을 수 있도록 :

  • 단일 autoincrementing 키를, 그래서 나는 UPDATE
  • 을 위해 그것을 사용할 수 있습니다
  • (local_id, remote_id)이 경우 테이블
+0

방금 ​​다른 질문에 답변을 게시했습니다. –

답변

1

독특한 유지되도록 필드 local_idremote_id 한 쌍, 당신은 페이지를 드롭 수 rimary 키를 사용하여 새 기본 키 정수 자동 증가 열을 만든 다음 다른 두 열에 UNIQUE 인덱스를 만듭니다.

+0

멋지다. 좋은 대안이다. 이봐, 내장 rowid가 있다면 왜 내가 자동 증가 기본 키를 원 할까? –

+1

문서를 올바르게 이해했다면 INTEGER PRIMARY KEY를 선언하면 ROWID 값의 별칭이됩니다. 명시 적으로 INTEGER PRIMARY KEY AUTOINCREMENT를 선언하면 약간 다른 (안전한) 동작을 얻습니다. 다음은 man 페이지입니다 : http://www.sqlite.org/autoinc.html. –

0

아하, 필요 없어 - 내장 된 rowid 열이 있습니다.

+0

첫 번째 항목이 삭제 된 경우 ROWID가 새 항목에 재 할당 될 수 있으므로 ROWID를 사용하여 다른 테이블에 연결하는 것은 좋지 않습니다. – Kevin

관련 문제