sqlite3:如何检测rowid别名列(主键)

时间:2010-12-29 22:10:34

标签: sqlite

使用SQLite3,如果你创建一个这样的表:

CREATE TABLE MyTable (
id int primary key,
--define other columns here--
)

结果sqlite3_column_type(0)总是返回SQLITE_NULL。 如果我read on a bit,这可能是设计使然,因为此列实际上是内部rowid字段的别名。

但是,确定某个列的编程方式是/ rowid字段的别名是什么?

(也许相关,我可以使用sqlite3_column_type(x)==SQLITE_NULL来确定当前记录的字段是否包含NULL吗?)

1 个答案:

答案 0 :(得分:2)

根据http://www.sqlite.org/draft/lang_createtable.html#rowid

  

PRIMARY KEY列只会成为   如果声明了整数主键   类型名称正好是“INTEGER”。其他   整数类型名称,如“INT”或   “BIGINT”或“SHORT INTEGER”或   “UNSIGNED INTEGER”导致初级   键列表现为普通的   具有整数亲和性的表列   唯一索引,而不是别名   rowid。

所以在你的情况下它是“int”所以无效的别名