Как данные из одного столбца использовать в другом?

Рейтинг: 0Ответов: 1Опубликовано: 18.06.2023

id автоинкримент, нужно, чтобы значение следующего за ним столбца формировалось из его значения:

query('INSERT INTO `sitys` VALUES (:id, SUBSTR("0000" || :id, -4, 4), :title. :text');

То есть получается, если id = 1, то следующий столбец = 0001

Как сделать такое?

Вот так работает, но это всё коряво, хотелось бы както поизящнее, в одну команду что ли

query('INSERT INTO `sisys` VALUES (:id, NULL, :title, :text)');
query('UPDATE `sisys` SET number = substr("0000" || id, -4, 4)');

Ответы

▲ 0Принят

Может Вам подойдет вычисляемый столбец в таблице? Пример:

CREATE TABLE t1(Id INTEGER
            , SValue TEXT 
            , GValue TEXT  GENERATED ALWAYS AS (substr('000'||Id,length(Id),4))STORED
                );
insert into `t1`(Id,SValue) VALUES(1,'test1');
insert into `t1`(Id,SValue) VALUES(10,'test10');
insert into `t1`(Id,SValue) VALUES(100,'test100');
select * from t1;

Результат

Id SValue GValue
1 test1 0001
10 test10 0010
100 test100 0100