2011-11-08 6 views
19

난 다음어떻게 안드로이드에 sqlite 테이블에서 열을 삭제합니까?

openDB.execSQL("ALTER TABLE favs" + " DROP COLUMN favsCount"); 

로그 캣을 사용하여 열을 삭제하려고 제공 다음 메시지 :

11-07 21 : 18 : 29.238 : ERROR/데이터베이스 (13,952) 근처 실패 1 ("DROP": 구문 오류) 0x34e550에서 'ALTER TABLE favs DROP COLUMN favsCount'를 준비 할 때.

안드로이드 용 sqlite에서 필드를 삭제할 수 있습니까? 죄송합니다

답변

42

, SQLite는 doesn't support DROP COLUMN :

(11) 어떻게 SQLite는 기존 테이블에서 열을 추가하거나 삭제할 수 없습니다.

SQLite는 테이블 끝 부분에 열을 추가하거나 테이블 이름을 변경하는 데 사용할 수있는 ALTER TABLE 지원이 제한되어 있습니다. [...]

예를 들어, 열 이름이 "a", "b"및 "c"이고 "c"열을이 테이블에서 삭제하려는 테이블이 "t1"이라고 가정합니다. "새 테이블을 만들고, 테이블을 삭제, 복사 다시 복사"

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; 

그래서 기본적으로, 당신은을 사용해야하는 열을 제거하는 기술을 : 다음 단계는이 작업을 수행 할 수있는 방법을 보여줍니다.

+0

"BEGIN TRANSACTION; 및 "COMMIT;" 트랜잭션이'SQLiteOpenHelper.getWritableDatabase()'에서 이미 시작되었으므로 데이터베이스를 차단할 수 있기 때문이다. – EmmanuelMess

+0

@muistooshort, EmmanuelMess 님의 댓글이 얼마나 유효합니까? – Suragch

+0

@Suragch 'SQLiteOpenHelper.getWritableDatabase()'에 대한 설명서를 확인하십시오 (당연히 사용중인 것으로 가정). 예제 SQL의 비트는 SQLite 문서 BTW에서 인용됩니다. –

4

mu가 너무 짧습니다. Sqlite가 열을 삭제하기 위해 alter table을 수행 할 수 없다고합니다. 여기에서 볼 수 있습니다

관련 문제