sqlite alter table은 단일 명령문에서 MULTIPLE 열을 추가합니다


159

sqlite의 단일 명령문에서 테이블 추가 MULTIPLE 열을 변경할 수 있습니까? 다음은 작동하지 않습니다.

테이블 테스트 변경 열 mycolumn1 텍스트 추가, 열 mycolumn2 텍스트 추가;

답변:


311

아니요, 한 번에 하나씩 추가해야합니다. SQLite의 ALTER TABLE 설명서 상단에있는 구문 다이어그램을 참조하십시오 .

ALTER TABLE 구문

ADD분기에 루프가 없으므로 반복이 허용되지 않습니다.


12
@ JoshPinter : 고맙지 만 SQLite 문서의 구문 다이어그램은 많은 크레딧을받을 가치가 있다고 생각합니다. 구문 다이어그램은 훌륭합니다. 모두가 문서에서 사용해야합니다.
mu는

이 답변은 정말 도움이되었습니다. 감사합니다.
Julian Alberto

0

@mu의 답변이 너무 짧습니다 '가 맞습니다. 또한 SQL 트랜잭션의 이점을 사용하여 여러 열을 추가하기위한 최적화 된 해결 방법을 추가합니다.

String alterTableQuery = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN ";
List<String> newColumns = ..// Your new columns

db.beginTransaction();
for (String column : newColumns){
    db.execSQL(alterTableQuery + column +  " VARCHAR");
}
db.setTransactionSuccessful();
db.endTransaction();

이것이 누군가를 도울 수 있기를 바랍니다.


0

내가 사용할 수있는 유일한 것은

BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT

;가 있습니다. 쿼리를 여러 줄로 읽도록하기 위해

그런 다음이 쿼리를 실행하고 실행시 여러 열을 추가합니다 ... 한 줄이 아니라 하나의 쿼리에서 가능합니다.


-16

테이블 테스트 변경 열 mycolumn1 텍스트 추가; 테이블 테스트 변경 열 mycolumn2 텍스트 추가;

위의 수정 된 쿼리를 사용하십시오.


6
그것은 하나의 문장이 아닙니다. ;구분자로 사용되는 것은 여러 문장으로 실행되어야하며 종종 중요합니다. 그러나 다른 답변은 이미 OP가 요구하는 것이 불가능하다는 것을 보여주었습니다.
o11c
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.