문제

데이터 및 색인이 관련된 기존 SQLite 2 데이터베이스 테이블에 추가 열을 추가하려면 어떻게합니까?

SQLITE2에서 사용할 수없는 Alter Table SQL처럼 보입니까?

도움이 되었습니까?

해결책

로부터 sqlite faq:

SQLITE는 테이블 끝에 열을 추가하거나 테이블 이름을 변경하는 데 사용할 수있는 Alter Table 지원이 제한되어 있습니다. 테이블 구조를보다 복잡하게 변경하려면 테이블을 재현해야합니다. 기존 데이터를 임시 테이블에 저장하고 이전 테이블을 떨어 뜨리고 새 테이블을 작성한 다음 임시 테이블에서 데이터를 다시 복사 할 수 있습니다.

예를 들어, 열 이름 "a", "b"및 "c"라는 열이있는 "t1"이라는 테이블이 있고이 테이블에서 "c"열을 삭제하려고한다고 가정하십시오. 다음 단계는이 작업을 수행 할 수있는 방법을 보여줍니다.

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;

다른 팁

SQLITE3는 한동안 나왔을 수도 있습니다. 원하는 방식으로 테이블과 함께 다른 DB를 만들고 데이터를 복사해야합니다. 또는 새 테이블을 만들고, 데이터를 복사하고, 원본을 떨어 뜨린 후, 새 테이블을 새 테이블로 교체하십시오.

드롭 테이블 드롭도 관련 트리거를 잊지 마십시오.

테이블을 수정하기 전에 명령 사용

.scheme TABLE_TO_MODIFY

다시 만들어야하는 트리거를 포함하여 삭제 될 모든 현재 진술을 버릴 것입니다.

건배,

엘릭슨

당신은 그렇지 않습니다. 테이블의 비 사소한 수정은 지원되지 않습니다. 당신이해야 할 일은 다음과 같습니다.

  1. 데이터를 임시 테이블에 복사하여 이전의 기존을 떨어 뜨립니다.
  2. 새 테이블을 만듭니다
  3. 원래 테이블에서 데이터를 복사하십시오
  4. 새 테이블을 만듭니다
  5. Temp의 데이터를 새 테이블로 복사하십시오
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top