2014-11-29 11 views
1

데이터베이스를 업그레이드하는 중에이 오류가 발생합니다. SQLiteAssetHelper를 사용하고 있습니다.트리거를 만들 때 오류가 발생했습니다.

11-30 03 : 32 : 55.868 : W/System.err에 (383) android.database.sqlite.SQLiteException : 근처 "author_id"에 의한 구문 오류 (코드 1), 컴파일하는 동안 :

CREATE TRIGGER [update_increase_size] 
AFTER INSERT 
ON [quote] 
FOR EACH ROW 
BEGIN 
    UPDATE author SET size = size+1 WHERE author_id = new.author_id;  
    UPDATE genre SET size = size+1 WHERE genre_id = new.genre_id; 
END; 

사람이 나에게 오류를 발견 할 수 : 는 [update_increase_size 여기서

트리거 내 스크립트가되는 트리거를 만드시겠습니까?

답변

0

마침내 문제가있는 것으로 확인되었습니다. 그것은 SQLiteAssetHelper가 트리거로 스크립트를 업데이트하는 데 문제가있는 것 같습니다. 트리거는 하나 이상의 세미콜론을 가질 수 있습니다.

private static final String TRIGGER_INCREASE_SIZE = "CREATE TRIGGER IF NOT EXISTS [update_increase_size] " 
     + "AFTER INSERT " 
     + "ON [quote] " 
     + "FOR EACH ROW " 
     + "BEGIN " 
     + "UPDATE [author] SET size = size+1 WHERE [author_id] = new.[author_id]; " 
     + "UPDATE [genre] SET size = size+1 WHERE [genre_id] = new.[genre_id]; " 
     + "END;"; 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVer, int newVer) { 
    // TODO Auto-generated method stub 
    db.execSQL(TRIGGER_INCREASE_SIZE);   
    super.onUpgrade(db, oldVer, newVer); 
} 

희망 미래에 비슷한 문제가 우연히 누구든지이 명확 모든 : 그래서 내가 한 수동으로 다음과 같이 onUpgrade의 방법에는 ExecSQL를 사용하여 스크립트를 호출하는 것이 었습니다.

관련 문제