SQLite3 — сгенерированный столбец

Есть у меня правило для сгенерированного столбца, вот оно:

number TEXT NOT NULL UNIQUE GENERATED ALWAYS AS (substr('0000' || id, length('id'), 4)) STORED

Но, когда номер доходит до десятки (0010), происходит ошибка. Если уменьшить число нолей на один, то та же ошибка случится, если число строк дойдёт до сотни (0100). Как сформулировать условие, чтобы не вызывало ограничений этого верхнего порога, ведь, число строк может превысить тысячу и более?


Ответы (1 шт):

Автор решения: Alpensin

Можно сделать вот так

number TEXT NOT NULL UNIQUE GENERATED ALWAYS AS (printf('%04d', id)) STORED

Если же делать через substr, то можно так

number TEXT NOT NULL UNIQUE GENERATED ALWAYS AS (substr('0000' || id, -max(4, length(id)), max(4, length(id)))) STORED
→ Ссылка