> Bob wrote:
> Affinity is only a hint and not an assurance of anything.
> I solve the problem by bloating the schema with checks like this:
>
> foo integer default 1234
> check (typeof(foo) == 'integer'),
>
> This enforces that someone can't put "Hello world" where an integer
> belongs.
I don't get to control others schema in providing a generic gui
for users.
> Simon wrote:
> The problem, as far as SQLite is concerned, is that the column
> should have been declared "TEXT' not STRING. Then it works correctly:
> SQLite version 3.22.0 2017-12-05 15:00:17 [...]
> sqlite> CREATE TABLE a (col1 STRING);
> sqlite> INSERT INTO a (col1) VALUES ("3.0");
> sqlite> SELECT * from a;
> 3
> sqlite> DROP TABLE a;
> sqlite> CREATE TABLE a (col1 TEXT);
> sqlite> INSERT INTO a (col1) VALUES ("3.0");
> sqlite> SELECT * from a;
> 3.0
> But course the dev team cannot correct the understanding of 'STRING'
> for backward compatibility reasons. And using affinities rather than
> types means that feeding a string into a numeric column does not
> generate an error. So the programmer never figured out that using
> 'STRING' as a type didn't do the right thing.
> It's a problem with multiple causes. And it cannot be fixed in SQLite3.
Nor should it! Ryan provided ample argument for a light DB engine that
SQLite seems to satisfy for millions with FLEXIBILITY! If you wish a
more constrained light RDBMS then H2, HSQL, and others are available.
I'm just happy at least I get a column affinity for type checking to
give some sanity. Thank you.
danap.
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users