首页 > 解决方案 > Sqlite 列被分配了错误的数据类型值

问题描述

我在 sqlite 中有一个具有以下架构的表:

CREATE TABLE message(ITEM_ID TEXT, COUNTRY_ID TEXT, CODES INTEGER);

即使 CODES 是整数,我仍然可以将字符串数据插入到表中,如下所示:

insert into message values(124,'5','R')

我期待来自 sqlite 的错误。它不应该返回错误吗?

谢谢,

标签: databasesqlitetextintegersqldatatypes

解决方案


SQLite 不以这种方式限制类型。SQLite FAQ有这样的说法;

SQLite 使用动态类型。它不强制执行数据类型约束。任何类型的数据都可以(通常)插入到任何列中。您可以将任意长度的字符串放入整数列、布尔列中的浮点数或字符列中的日期。您在 CREATE TABLE 命令中分配给列的数据类型不会限制可以将哪些数据放入该列。

这与(大多数)其他 SQL 数据库有所不同,您可能已经注意到,在测试数据库代码时需要格外小心。


推荐阅读