Sqlite3 - 为什么我可以将字符串插入整数字段?

时间:2016-05-15 12:05:03

标签: sqlite

在postgresql中,如果我这样做:

CREATE TABLE numbers (n INTEGER);
INSERT INTO numbers(n) VALUES('a');

我明白了:

LINE 1: INSERT INTO numbers(n) VALUES('a');
                                      ^

但是,在sqlite3中,我将字符串保存在INTEGER字段中。

为什么sqlite3不会阻止我插入非INTEGER值 一个INTEGER字段?

1 个答案:

答案 0 :(得分:0)

简单的答案是它们是不同的数据库,并不一定符合相同的标准。 Postgres对于处理数据的方式更严格,更正式,如果你尝试做一些没有意义的事情,通常会抛出错误。在这种情况下,您无法将字符串或字符分配给整数字段,而无需显式转换或将其转换为INTEGER。这是正确的行为。 Sqlite(以及MySql)的严格程度要低得多,即使它们不一定有效或有意义,它们有时会接受它们。