2012-11-21 2 views
-1

가능한 중복 :
ALTER COLUMN in sqliteAlter table 사용 방법 android에서 SQLite의 열 쿼리를 변경 하시겠습니까?

내가 업그레이드하는 동안 열의 데이터 형식을 변경하고 싶습니다. 열의 데이터 형식을 변경하는 방법에 대해 알고 싶습니다.

Alter table Alter column 변경 문을 사용할 때 구문 오류가 발생합니까? 이 페이지에 명시된 바와 같이

+0

변경할 테이블 쿼리를 게시 할 수 있습니까? –

+0

안드로이드와 어떤 관계가 있습니까? – HerrSerker

답변

0

http://www.sqlite.org/lang_altertable.html

SQLite는이 ALTER TABLE ALTER COLUMN 구문을 지원하지 않습니다.

필자는 열의 값을 다른 곳에 저장하고, 새 열을 추가하고, 저장된 값을 새 열로 다시 작성한 다음 이전 열을 삭제해야합니다.

1

님, SQLite's ALTER TABLE은 매우 제한되어 수 없습니다

enter image description here

은 그래서 당신은 ALTER 테이블과 테이블의 이름을 변경하거나 하나의 새 열을 추가 할 수 있습니다. (당신을 위해) 적어도 SQLite의 "type"개념은 꽤 느슨하며 열 정의 방법보다 무언가를 사용하는 방법에 더 의존합니다. 예 :

sqlite> create table t (i int); 
sqlite> insert into t (i) values (11); 
sqlite> insert into t (i) values ('pancakes'); 
sqlite> select * from t; 
i 
11 
pancakes 

다른 유형의 열에도 데이터를 넣을 수 있습니다.

그러나 테이블의 스키마를 검사하는 도구를 사용하여 테이블의 데이터를 기본 유형으로 변환하는 방법을 결정할 경우 ALTER TABLE ALTER COLUMN을 시뮬레이트해야합니다. AFAIK, 그럴 수있는 유일한 방법은 추한 방법입니다 :

  1. 찾고있는 스키마가있는 새 테이블을 만듭니다.
  2. 이전 테이블의 모든 항목을 새 테이블로 복사하십시오.
  3. 원본 테이블을 삭제하십시오.
  4. ALTER TABLE RENAME을 사용하여 새 올바른 테이블의 이름을 원래 이름으로 바꿉니다.

나는 추한 방법으로 SQLite의 느슨한 타입 시스템을 무시합니다. 내가 정수로 선언 된 열에서 'pancakes'을 찾으면 나는 조금 혼란스럽고 책임자에 대해 가혹한 단어를 가지고있을 것입니다.

관련 문제