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