Using SQLite 3.7.15.2. The following statements execute with no error:
CREATE TABLE [test1] (
[id] INTEGER,
[name] CHAR DEFAULT 'test');
CREATE TABLE [test2] (
[id] INTEGER,
[name] CHAR DEFAULT ('test'));
CREATE TABLE [test3] (
[id] INTEGER,
[name] CHAR DEFAULT "test");
However, the following returns "default value of column [name] is not
constant."
CREATE TABLE [test4] (
[id] INTEGER,
[name] CHAR DEFAULT ("test"));
There are no identifiers in this context named "test" - no other tables or
columns, and "test" is not a keyword. Changing "test" to a keyword like
"key" or "glob" returns the same error.
The SQLite documentation reads:
"If a keyword in double quotes (ex: "key" or "glob") is used in a context
where it cannot be resolved to an identifier but where a string literal is
allowed, then the token is understood to be a string literal instead of an
identifier."
So in the last statement, "test" (or "key") is used in a context where it
cannot be resolved to an identifier but the token is *not* understood to be
a string literal.
To resume: while "test" is evaluated correctly as a string literal, after
enclosing it in parenthesis ("test") it no longer is.
Does this work as intended?
BTW, in my opinion the above quote should be changed to:
"If a string in double quotes (be it keyword or not) is used in a context
where it cannot be resolved to an identifier but where a string literal is
allowed, then the token is understood to be a string literal instead of an
identifier."
Regards,
Bogdan Ureche
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users