tags:

views:

219

answers:

2

I wrote something like

create table if not exists QuickTest (
id integer primary key NOT NULL,
a TEXT DEFAULT @0,
b TEXT,
c TEXT);

I get an error on @0. Is there a way to insert parameters here or do i need to hardcode the value in? I typically like using parameters when setting values.

+1  A: 

You have to use string constant or NULL.

http://www.sqlite.org/syntaxdiagrams.html#column-constraint

The DEFAULT constraint specifies a default value to use when doing an INSERT. The value may be NULL, a string constant, a number, or a constant expression enclosed in parentheses. The default value may also be one of the special case-independant keywords CURRENT_TIME, CURRENT_DATE or CURRENT_TIMESTAMP. If the value is NULL, a string constant or number, it is inserted into the column whenever an INSERT statement that does not specify a value for the column is executed. If the value is CURRENT_TIME, CURRENT_DATE or CURRENT_TIMESTAMP, then the current UTC date and/or time is inserted into the columns. For CURRENT_TIME, the format is HH:MM:SS. For CURRENT_DATE, YYYY-MM-DD. The format for CURRENT_TIMESTAMP is "YYYY-MM-DD HH:MM:SS".

pierr
I think your saying it must be a literal and i cant use a placeholder like @name as i do in an insert/update/select
acidzombie24
+1  A: 

You can't use parameters in a ddl (data definition language) statement, only in dml (data manipulation language) statement and select statements are parameters allowed.

tuinstoel