Thanks for the responses. Just a brain error. Not sure what I was thinking :)
On Tue, May 15, 2018 at 6:55 PM R Smith <ryansmit...@gmail.com> wrote: > > On 2018/05/16 1:25 AM, Mark Wagner wrote: > > OK, at the risk of exposing my lack of edification... > > Sometimes you pay the price for taking a risk. :) > > > create table t (k integer primary key, s text UNIQUE); > > Did you by any chance assume the "UNIQUE" constraint to cover both the > fields k and s? It applies of course only to s here. If you wanted it to > apply to both, the schema should read: > create table t(k integer primary key, s text, unique(k,s) ); > > (I'm just trying to guess at what caused the confusion - even if you do > change to this schema, the uniqueness constraint will pass even better > than before, since the primary key is by definition unique and > automatically increments, so any key in which it appears MUST also be > unique for every value in it, even if you added 'bar' ten times in a > row, it will never fail.) > > > insert into t (s) values ("foo"); > > insert into t (s) values ("bar"); > > select * from t; > > k s > > ---------- ---------- > > 1 foo > > 2 bar > > foo and bar here (which should be quoted like 'foo' and 'bar' by the > way, double-quotes are for identifiers) are very unique, so cannot > possibly constitute a uniqueness violation. > > > > > Adding to my confusion is this: > > > > insert into t values (3, "bar"); > > Error: UNIQUE constraint failed: t.s > > whereas 'bar' here definitely is not unique (there is already a 'bar' in > there) and thus fails. > > I've always found the higher level languages to be slightly less than > intuitive, since they try to "read like English", except the language is > nuanced and often what something seems to mean in English is not what it > really means in the computed sense. That means that a statement fragment > like UNIQUE needs as much documentation as, for instance, the lower > level assembly language MOV command, if not more, because MOV left you > with zero assumptions, you had to check the docs to see what it did, and > even then, it delightfully did the very minimum. > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users