Sqlite3-为什么我可以将字符串插入整数字段?
在postgresql中,如果我这样做: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不阻止我向 一个整数字段?简单的回答是,它们是
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)没有那么严格,有时会接受值,即使它们不一定有效或有意义