Room框架中部分实体表名在Dao查询中加反引号的原因
为什么Room中部分表名会自动添加反引号?
- 核心原因是**
transaction是SQL的保留关键字**,而account、category这类名称不属于保留关键字。 - SQL保留关键字是数据库系统预留的特殊词汇,比如
TRANSACTION用于定义事务操作,SELECT、FROM这类也属于此类。如果直接把这些关键字用作表名或列名,数据库会将其识别为SQL命令而非普通标识符,从而引发语法错误。 - Room在生成DAO查询语句时,会自动检测实体的表名/列名是否属于SQL保留关键字。如果是,就会用反引号(``)将其包裹起来进行转义,让数据库将其当作普通的表名处理;非关键字的名称则不需要转义,因此不会自动添加反引号。
内容的提问来源于stack exchange,提问作者Tonnie
相关产品推荐
相关产品推荐

