相关疑难解决方法(0)

为什么不能将SQLite ROWID用作主键?

这不会执行:

create table TestTable (name text, age integer, primary key (ROWID))
Run Code Online (Sandbox Code Playgroud)

错误消息是:

11-23 11:05:05.298:ERROR/Database(31335):在准备'create table TestTable(name text,age integer,primary key(ROWID))'时,0x2ab378上的失败1(表TestTable没有名为ROWID的列).

但是,在创建TestTable之后,这准备并执行得很好:

create table TestTable (name text, age integer);

insert into TestTable (name, age) values ('Styler', 27);

select * from TestTable where ROWID=1;
Run Code Online (Sandbox Code Playgroud)

我可能会认为ROWID这是一个需要自动增量主键和外键的解决方案,它们永远不会被用作应用层上的数据.由于默认情况下ROWID隐藏了select结果集,因此将它与主键相关联同时使其与应用程序逻辑隐藏在一起会很不错. OracleBlog:ROWNUM和ROWID说这是不可能的,也是不可取的,但除此之外没有提供太多解释.

所以,既然'这可能'的答案绝对不是/不可取的,那么问题或多或少是'为什么不'?

sql sqlite primary-key

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

primary-key ×1

sql ×1

sqlite ×1