Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite3-为什么我可以将字符串插入整数字段?_Sqlite - Fatal编程技术网

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

Sqlite3-为什么我可以将字符串插入整数字段?,sqlite,Sqlite,在postgresql中,如果我这样做: CREATE TABLE numbers (n INTEGER); INSERT INTO numbers(n) VALUES('a'); 我得到: LINE 1: INSERT INTO numbers(n) VALUES('a'); ^ 但是,在sqlite3中,我得到了保存在INTEGER字段中的字符串 为什么sqlite3不阻止我向 一个整数字段?简单的回答是,它们是

在postgresql中,如果我这样做:

CREATE TABLE numbers (n INTEGER);
INSERT INTO numbers(n) VALUES('a');
我得到:

LINE 1: INSERT INTO numbers(n) VALUES('a');
                                      ^
但是,在sqlite3中,我得到了保存在
INTEGER
字段中的字符串

为什么sqlite3不阻止我向
一个
整数
字段?

简单的回答是,它们是不同的数据库,不一定符合相同的标准。Postgres在处理数据方面更加严格和正式,如果你试图做一些没有意义的事情,它通常会抛出错误。在这种情况下,如果不将字符串或字符显式转换或强制转换为整数,则无法将其分配给整数字段。这是正确的行为。Sqlite(以及MySql)没有那么严格,有时会接受值,即使它们不一定有效或有意义