Как вставить запрос в SQLite с автоинкрементным значением для каждой строки - PullRequest
0 голосов
/ 23 сентября 2019

Предположим, я вставляю следующий набор запросов в новую таблицу в SQLite:

CREATE TABLE queryset_cache AS 
SELECT ROW_NUMBER() over () AS rowid, * FROM mytable ORDER BY product;

Возможно ли:

  • Установить rowid как автоинкрементPK в sqlite из вставки, или;
  • Исключить rowid и автоматически добавлять SQLite в автоинкрементный первичный ключ для каждой вставленной записи.

Как это будет сделано?

В настоящее время, без этого, когда я делаю вставку, rowid не индексируется.

Ответы [ 3 ]

2 голосов
/ 23 сентября 2019

rowid уже там.Вы можете просто сделать:

CREATE TABLE queryset_cache AS 
    SELECT t.*
    FROM mytable t
    ORDER BY product;

Вы увидите это, если сделаете:

SELECT rowid, t.*
FROM queryset_cache;

Здесь это db <> скрипка

0 голосов
/ 24 сентября 2019

Если у нас есть таблица типа:

create table employee (empID integer, name text , address text);

вставьте данные в эту таблицу.

создайте таблицу, в которую вы хотите вставить данные таблицы сотрудника:

create table newEmployee (newempID integer PRIMARY KEY, name text , address text);

скопировать данные в таблицу newEmployee:

insert into newEmployee select * from employee

(select * from employee), чтобы скопировать все столбцы

0 голосов
/ 23 сентября 2019

Инкремент Auo должен решить эту проблему.Документация здесь:

https://www.sqlite.org/autoinc.html

Создание исходной таблицы:

create table sourceTable (oldID integer, data TEXT);

Добавление исходных данных:

insert into sourceTable values(7, "x");
insert into sourceTable values(8, "y");
insert into sourceTable values(9, "z");

Создание целевой таблицы с автоматическимприращение:

create table target(newID INTEGER PRIMARY KEY AUTOINCREMENT, data TEXT);

Перемещение данных от источника к цели:

insert into target select null, data from sourceTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...