如何避免SQLite中的自动数据类型转换

How to avoid automatic data type conversions in SQLite

提问人:Jo_b 提问时间:11/10/2023 更新时间:11/10/2023 访问量:11

问:

我正在 RSQLite 中创建一个表,并希望避免可能因数据类型错误指定而导致的错误。我尝试添加一个 check(typeof()) 约束。但是,尽管有检查约束,SQLite 似乎仍在执行从数字到文本的自动转换。我还尝试创建一个“STRICT”表,但问题仍然存在。谁能帮我弄清楚发生了什么并避免自动转换?非常感谢!

下面的代码向 “TEST” 表中指定为类型 “text” 的 ID 变量添加一个 check 约束。但是,当插入数值而不是文本值时,不会标记任何错误。查询数据时,数值似乎已自动转换为字符值。

dbExecute(conn = dbconn, “创建表测试(

  • ID TEXT CHECK(TYPEOF(ID) = 'text'))“) [1] 0

数据<- data.frame(ID = 1) str(数据) 'data.frame': 1 个变量的 1 个 obs: $ ID:数字 1 dbWriteTable(conn = dbconn, “TEST”, data, append = T)

出 <- dbSendQuery(conn = dbconn, statement = “select * from TEST”) 取出 (out) 编号 1 1.0 str(fetch(输出)) 'data.frame': 0 个 obs. 共 1 个变量: $ ID:chr

隐式转换 SQLDATATYPES RSQLITE

评论


答: 暂无答案