UPDATE表SET column = DEFAULT不起作用

时间:2019-05-01 06:52:10

标签: sqlite

将列UPDATE设置为DEFAULT值的正确方法是什么? 该文档建议仅在INSERT语句中使用它。

drop table if exists testjulian;
create table testjulian( 
jul REAL NOT NULL DEFAULT ( julianday('now'))
,whatever STRING);

insert into testJulian values(null,"a"); --null not allowed
insert into testJulian(whatever) values("b"); --default value is used

update testjulian set jul= DEFAULT ; --syntax error
update testjulian set jul= NULL ; --null not allowed

1 个答案:

答案 0 :(得分:0)

DEFAULT关键字仅限于在创建表时使用,它是为插入时设计的。

它不能用于更新,因此语法错误。

您可以使用:-

update testjulian set jul = julianday('now');

或者,如果您真的想动态获取DEFAULT值,则可以从sqlite_master的 sql 列中提取它。

例如使用

SELECT sql FROM sqlite_master WHERE name = 'testjulian';

给你:-

  

创建表testjulian(jul REAL NOT NULL DEFAULT(   julianday('now')),无论STRING)