在普通rowid表中,列级INTEGER PRIMARY KEY DESC是保留的历史兼容例外,这一列不成为rowid别名。单列主键的声明类型必须恰为 INTEGER,才可能成为 rowid 别名;而列定义中写成 INTEGER PRIMARY KEY DESC 属于保留的历史兼容例外,不成为别名。若x声明类型恰为INTEGER,并写成表级PRIMARY KEY(x DESC),则它在普通rowid表中仍是rowid别名;不能把列级DESC例外套到表级声明。判断时应以完整原 DDL 为准,不通过重建表试错。

适用:本题针对济宁任城区台式电脑上使用的 SQLite 应用,重点是普通 rowid 表的单列主键声明,以及列级 INTEGER PRIMARY KEY DESC 的兼容例外,不是所有带整数列的表都适用。先核对实际库版本、功能与编译配置,只检查已有去敏 schema、SQL 和日志,不改生产库、不重发写入,也不制造崩溃来验证。
观察:查看该表完整建表语句,确认主键写在列定义中,还是以表级 PRIMARY KEY(...) 出现,并确认是否有 WITHOUT ROWID。若完整 DDL 明确是列级 INTEGER PRIMARY KEY DESC,按本题规则该列不成为 rowid 别名;若看到表级PRIMARY KEY(x DESC),应同时核x的声明类型;恰为INTEGER且符合普通rowid表单列主键条件时仍是别名;若列类型不是恰为 INTEGER,而是 INT、BIGINT 等,也不能直接视为别名。再核对列名是否与 rowid、oid、_rowid_ 冲突,并查看现有查询日志是否依赖这些特殊名称。只有在表不是 WITHOUT ROWID、主键为单列、声明类型恰为 INTEGER,且不属于本题所述列级 DESC 例外等条件同时满足时,才可能涉及 rowid 别名。
风险:把列级 INTEGER PRIMARY KEY DESC 误当别名,会让依赖 rowid 的排序、定位、更新或去重逻辑建立在错误前提上;把表级 PRIMARY KEY(x DESC) 与列级声明混为一谈,也会造成误判。若为验证而重建表或写入测试数据,还可能扰动生产数据、触发锁等待或影响原有索引。
下一步:收集该表的去敏完整原 DDL、SQLite 版本、是否 WITHOUT ROWID、相关只读查询日志和报错信息,保留原始类型拼写与主键位置,先做静态核对。需要咨询时,可拨打 400-877-9605;电脑快修网是信息展示与第三方维修对接平台,电话只作咨询,实际范围和安排需确认。