Я бегу:
sqlite> .version
SQLite 3.27.1 2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd
zlib version 1.2.11
clang-10.0.0
У меня есть следующая таблица:
CREATE TABLE FOO (
ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
SORT REAL NOT NULL UNIQUE DEFAULT 0,
NAME TEXT NOT NULL
);
CREATE TRIGGER FOO_sort_after_insert_trigger
AFTER INSERT ON FOO FOR EACH ROW
BEGIN
UPDATE FOO
SET SORT = (
SELECT IFNULL(MAX(SORT), 0) + 1
FROM FOO
)
WHERE ID = NEW.ID;
END;
Заполнено таким образом:
sqlite> select * from foo order by sort;
ID|SORT|NAME
1|1.0|A
2|3.5|B
4|4.0|D
3|5.0|C
Я пытаюсь найтиследующее sort
значение после строки 2
sort
, но я всегда получаю значение по умолчанию, но ожидаю получить 4.0
:
sqlite> select lead(sort, 1, -42) over (order by sort) as next_sort
from foo
where id = 2;
next_sort
-42