2016-05-15 2 views
1

В PostgreSQL, если я это сделать:Sqlite3 - Почему я могу вставить строку в целое поле?

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

я получаю:

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

Но, в sqlite3, я получил строку, сохраненную в INTEGER поле.

Почему sqlite3 не мешает мне вставлять значение INTEGER в a INTEGER Поле?

ответ

0

Простой ответ заключается в том, что они разные базы данных и не обязательно соответствуют одному и тому же стандарту. Postgres является более строгим и более формальным с тем, как он обрабатывает данные и обычно выдает ошибку, если вы попытаетесь сделать что-то, что не имеет смысла. В этом случае вы не можете назначить строку или символ целочисленному полю без явного преобразования или переноса его в INTEGER. Это правильное поведение. Sqlite (а также MySql) гораздо менее строги и иногда принимают значения, даже если они не обязательно действительны или значимы.