Am Thu, 7 Sep 2017 00:15:39 +0200 schrieb Cecil Westerhof: > 2017-09-07 0:05 GMT+02:00 R Smith <[email protected]>: > >> On 2017/09/06 11:58 PM, R Smith wrote: >> >>> Your CHECK constraint should really find that the value is acceptable >>> when it is either a REAL, OR an INT, because both those types of data >>> satisfies your requirement. >>> >>> >> To be specific, this should work for you: >> >> CREATE TABLE weights( >> float REAL, >> CONSTRAINT float CHECK(TYPEOF(float) IN ("real","int")) >> ); > > > ​But it does not. > > The strange thing is: when I remove the constraint and do: > INSERT INTO testing > (float) > VALUES > (0) > > The insert is successful of-course. > When I then execute: > SELECT float, TYPEOF(float) > FROM testing > > I get: > "0.0" "real" > > > Maybe this is correct, but it is certainly confusing.
Add this trigger and everything is fine. ;-) CREATE TRIGGER weights_float_force_datatype BEFORE INSERT ON weights FOR EACH ROW BEGIN INSERT INTO weights(float) VALUES (CAST (new.float AS REAL)); SELECT RAISE(IGNORE); END _______________________________________________ sqlite-users mailing list [email protected] http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

