Android事务还是触发器?

Android事务还是触发器?,android,sqlite,transactions,triggers,Android,Sqlite,Transactions,Triggers,我正在开发一个燃料使用应用程序,它将在安卓1.6版之后运行。v1.6上捆绑的SQLite不提供外键,因此我不得不手动处理它。到目前为止,我已经使用Android事务完成了这项工作: public static long addFuelUp(String registrationNumber, String date) { SQLiteDatabase db = uKMpgData.getReadableDatabase(); long result = -1; C

我正在开发一个燃料使用应用程序,它将在安卓1.6版之后运行。v1.6上捆绑的SQLite不提供外键,因此我不得不手动处理它。到目前为止,我已经使用Android事务完成了这项工作:

    public static long addFuelUp(String registrationNumber, String date)
{
    SQLiteDatabase db = uKMpgData.getReadableDatabase();
    long result = -1;
    ContentValues values = new ContentValues();
    Cursor vehicleCursor = VehicleDataProvider.getVehicle(registrationNumber);

    if(vehicleCursor.moveToNext())
    {
        Cursor fuelUpsCursor = getFuelUps(registrationNumber, date);
        if(!fuelUpsCursor.moveToNext())
        {
            db.beginTransaction();
            try
            {
                    values.put(REGISTRATION_NO_COLUMN, registrationNumber.replace(" ", ""));
                    values.put(DATE_TIME_COLUMN, date);
                    result = db.insertOrThrow(FUEL_USE_TABLE_NAME, null, values);
                    db.setTransactionSuccessful();
            }
            catch(SQLException e)
            {
                Log.d("addFuelUp", e.getMessage());
            }
            finally
            {
                db.endTransaction();
                vehicleCursor.close();
                fuelUpsCursor.close();
            }
        }
    }
    return result;
}
即,除非数据库中有匹配的车辆登记号,否则无法输入燃油数据

我的问题是,有没有更好的办法?我不是数据库专家,但我知道你可以设置触发器来执行规则——触发器是否更适合处理约束

干杯,
巴里触发器将是解决这个问题的好办法


事实上,有一种自动生成模拟外键的触发器的方法。SQLite for PC提供了一个名为“genfkey”的实用程序,它可以检查使用外键的现有数据库,并输出相应的触发器。

触发器将是解决此问题的好方法

事实上,有一种自动生成模拟外键的触发器的方法。SQLite for PC提供了一个名为“genfkey”的实用程序,它可以检查使用外键并输出相应触发器的现有数据库