Sqlite在create table中设置默认值

时间:2010-01-13 18:39:18

标签: sqlite ado.net

我写了类似

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

我在@ 0上收到错误。有没有办法在这里插入参数或我需要硬编码值?我通常喜欢在设置值时使用参数。

3 个答案:

答案 0 :(得分:6)

您必须使用字符串常量或NULL。

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

  

DEFAULT约束指定执行INSERT时要使用的默认值。值可以是NULL,字符串常量,数字或括在括号中的常量表达式。默认值也可以是特殊情况独立关键字CURRENT_TIME,CURRENT_DATE或CURRENT_TIMESTAMP之一。如果值为NULL,字符串常量或数字,则只要执行未指定列值的INSERT语句,就会将其插入到列中。如果值为CURRENT_TIME,CURRENT_DATE或CURRENT_TIMESTAMP,则将当前UTC日期和/或时间插入列中。对于CURRENT_TIME,格式为HH:MM:SS。对于CURRENT_DATE,YYYY-MM-DD。 CURRENT_TIMESTAMP的格式为“YYYY-MM-DD HH:MM:SS”。

答案 1 :(得分:5)

您不能在ddl(数据定义语言)语句中使用参数,只能在dml(数据操作语言)语句中使用select语句并允许使用参数。

答案 2 :(得分:1)

CREATE TABLE test(id INTEGER DEFAULT -1,name VARCHAR DEFAULT na)

上面的sql将创建一个包含两个colums id和name的表测试 如果没有为id和name指定值,则为此表执行insert时,它将为id列插入-1,并为name列插入na