ОБНОВЛЕНИЕ таблицы SET, столбец = ПО УМОЛЧАНИЮ не работает - PullRequest
1 голос
/ 01 мая 2019

Как правильно указать 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 голосов
/ 01 мая 2019

Ключевое слово DEFAULT ограничено использованием при создании таблицы и предназначено для вставки.

Он не может быть использован для обновления, следовательно, синтаксическая ошибка.

В вашем случае вы можете использовать: -

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

Или, если вы действительно хотите получить динамическизначение DEFAULT, которое вы можете извлечь из столбца sql sqlite_master.

, например, используя

SELECT sql FROM sqlite_master WHERE name = 'testjulian';

, дает вам: -

CREATE TABLE testjulian (jul REAL NOT NULL DEFAULT (julianday ('now')) , независимо от STRING)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...