SQLite データベースの行数を 1 に制限しようとしています。私はあらゆる場所で適切な解決策を探しましたが、どこにも行きませんでした。多くの提案 (制約、トリガーなど) を受け取りましたが、現在のスキル レベルで簡単に実装できるソリューションは実際には見つかりませんでした。トリガーを試すことにしましたが、コードを適切に記述する場所が見つかりません。私は構造を持っていますが、構文を適切にフォーマットする方法がわかりません。私のコードはもちろん動作していません(コンパイルエラー)。このコードを Android 用に適切に記述する方法を教えていただけると助かります。私はすでに sqlite.org サイト ( http://www.sqlite.org/lang_createtrigger.html )のいたるところにいます。
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);