Android复合主键是什么?

4

有人能告诉我在Android 1.6中如何声明一个包含自动递增_id列的复合主键吗?我不确定语法。当我尝试添加值时,我最终只是在Java中强制执行它(其中registrationNumber + date必须在表中唯一):

            Cursor fuelUpsCursor = getFuelUps(registrationNumber, date);
        if(!fuelUpsCursor.moveToNext())
        {
            //add registrationNumber and date
        }

我并不真正需要_id列,但如果表没有_id列,它可能会让生活变得棘手。

谢谢, Barry

1个回答

5
你的问题不是很清楚。你的主题要求一个“复合外键”,你的第一句话要求一个带有AUTOINCREMENT的“复合主键”,而你的示例代码却忽略了这个。我会这样理解你的问题:你想在表中使用一个_ID INTEGER PRIMARY KEY AUTOINCREMENT列来使用Android的CursorAdapter,但你也想确保另外两列的组合是唯一的。如果是这样的话,我认为你需要使用一个UNIQUE约束:

抱歉-在写标题后,我改变了对主键和外键的看法。现在我已经更改了它们。感谢您的回复-UNIQUE确实是正确的-<code>db.execSQL("CREATE TABLE " + FUEL_USE_TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + REGISTRATION_NO_COLUMN + " TEXT, " + DATE_TIME_COLUMN + " TEXT, UNIQUE (" + REGISTRATION_NO_COLUMN + ", " + DATE_TIME_COLUMN + "));");<code> - barry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接