1.

Sqlite Lets Me Insert A String Into A Database Column Of Type Integer?

Answer»
  • This is a feature, not a bug. SQLite uses dynamic typing.
  • It does not enforce data type constraints.
  • Data of any type can (usually) be inserted into any column.
  • You can put arbitrary length strings into integer columns, floating point numbers in boolean columns, or DATES in character columns.
  • The datatype you assign to a column in the CREATE TABLE COMMAND does not restrict what data can be put into that column.
  • Every column is able to HOLD an arbitrary length string. (There is one EXCEPTION: Columns of type INTEGER PRIMARY KEY may only hold a 64-bit signed integer.
  • An error will result if you try to put anything other than an integer into an INTEGER PRIMARY KEY column.)
  • But SQLite does use the declared type of a column as a hint that you prefer values in that format.
  • So, for example, if a column is of type INTEGER and you try to insert a string into that column, SQLite will attempt to convert the string into an integer.
  • If it can, it inserts the integer instead. If not, it inserts the string.
  • This feature is called type affinity.



Discussion

No Comment Found