SQlite主键不起作用

时间:2017-04-05 11:10:09

标签: android sqlite primary-key

我有下表:

    String sqlStatement = "CREATE TABLE " + CallsEntry.TABLE_NAME + "(";
    sqlStatement += CallsEntry.FIELD_CALL_ID + " INT PRIMARY KEY DESC,";
    sqlStatement += CallsEntry.FIELD_CALLER_PHONE + " TEXT,";
    sqlStatement += CallsEntry.FIELD_INSERTION_DATE_MILLIS + " INT); COMMIT;";

    db.execSQL(sqlStatement);

请注意,主键是降序。

然后我希望根据我对SQL服务器的经验,以下查询将按降序生成记录:

SELECT * FROM tblCalls;

但事实并非如此。我按升序收到记录。我必须用这个:

SELECT * FROM tblCalls ORDER BY CallId DESC;

为什么?我可以采取不同的做法并按降序获取记录吗?

2 个答案:

答案 0 :(得分:1)

SQLite中有默认键顺序

取决于documentation

  

如果返回多行的SELECT语句没有   ORDER BY子句,返回行的顺序是   未定义。或者,如果SELECT语句确实具有ORDER BY子句,   然后附加到ORDER BY的表达式列表确定   将行返回给用户的顺序。

因此默认顺序是在没有ORDER BY子句的情况下定义的。

答案 1 :(得分:0)

这会产生正确的顺序吗?

Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, numberPerPage = ViewBag.numberPerPage }) + ViewBag.CategoryPager)