为什么OrmLite/SqlLite/Android中的表需要"`"?

mog*_*lol 2 sqlite android ormlite

在Android上使用OrmLite我尝试过一个简单的查询:

GenericRawResults<String[]> results = queryRaw("SELECT * FROM transaction");
Run Code Online (Sandbox Code Playgroud)

不幸的是我接受了一个例外:

near "transaction": syntax error: , while compiling: SELECT * FROM transaction
Run Code Online (Sandbox Code Playgroud)

我发现这令人困惑,在逐步完成并看到Orm通过编译语句生成的内容后,我意识到语法应该是:

GenericRawResults<String[]> results = queryRaw("SELECT * FROM `transaction`");
Run Code Online (Sandbox Code Playgroud)

我只是有点困惑,为什么这是必需的?

Dav*_*ton 5

"Transaction"是一个SQLite3关键字.

来自该页面的相关引用,位于最顶层:

SQL标准指定了不能用作表[...]
[...]
名称的关键字.如果要使用关键字作为名称,则需要引用它.

文档是你的朋友.*

*除非不是.但在这种情况下,它是.