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.