我想限制我的SQLite Db中的行數爲一個。我已經在每個地方尋找適當的解決方案,但沒有得到任何地方。我收到了許多建議(約束,觸發器等),但還沒有真正找到一個解決方案,以我目前的技能水平實現。我決定嘗試觸發器,但無法找到正確編寫代碼的位置。我有結構,但不知道如何正確地格式化語法。我的代碼是低於哪個當然不工作(編譯錯誤)。任何幫助指示如何正確地編寫此代碼爲Android將不勝感激。我已經被各地sqlite.org網站(http://www.sqlite.org/lang_createtrigger.html)SQLIte行限制
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sqlDataStore = "create table if not exists " +
TABLE_NAME_CREDENTIALS + " ("+ BaseColumns._ID + " integer primary key " + " ON CONFLICT FAIL ,"
+ COLUMN_NAME_USERNAME + " TEXT NOT NULL " + " UNIQUE,"
+ COLUMN_NAME_PASSWORD + " TEXT NOT NULL " + " UNIQUE);";
db.execSQL(CREATE TRIGGER " row_limiter " + " BEFORE INSERT "
+ " ON "
+ " TABLE_NAME_CREDENTIALS "
+ " FOR EACH ROW WHEN "
+ (SELECT + "_id" + FROM + " TABLE_NAME_CREDENTIALS ") > "1"
+ BEGIN
DELETE FROM + "TABLE_NAME_CREDENTIALS" + WHERE + "_id " > "1";
END
db.execSQL(sqlDataStore);
}
DB與主鍵設置爲表:
String sqlDataStore = "create table if not exists " +
TABLE_NAME_CREDENTIALS + " ("+ BaseColumns._ID + " NOT NULL,"
+ COLUMN_NAME_USERNAME + " TEXT NOT NULL, "
+ COLUMN_NAME_PASSWORD + " TEXT NOT NULL, "
+ " PRIMARY KEY (username, passcode))";
插入:
contentValues.put(LoginDB.COLUMN_NAME_USERNAME, rUsername);
contentValues.put(LoginDB.COLUMN_NAME_PASSWORD, rPasscode);
可能重複:http://stackoverflow.com/questions/2035670/limit-an-sqlite-tables-maximum-行數 –
這是相似的,但不是重複的。你所指的與限制而不是觸發器有關。從我的知識限制聲明不適用於Android SQLite .. – sean