我在sqlite中有一个表,其模式如下:
CREATE TABLE message(ITEM_ID TEXT, COUNTRY_ID TEXT, CODES INTEGER);
即使代码是整数,我仍然可以像这样将字符串数据插入表中:
insert into message values(124,'5','R')
我以为sqlite会出错。它不应该返回错误吗?
谢谢
SQLite不会以这种方式限制类型。这个 SQLite FAQ 有这样的说法;
SQLite使用动态类型。它不强制执行数据类型约束。任何类型的数据(通常)都可以插入到任何列中。可以将任意长度的字符串放入整数列、布尔列中的浮点数或字符列中的日期。在CREATE TABLE命令中指定给列的数据类型不限制可以将哪些数据放入该列。
这与(大多数)其他SQL数据库不同,正如您可能已经注意到的,在测试数据库代码时需要格外小心。