nesco, писал(а):
есть запрос на пересчет PRIMARY KEY AUTOINCREMENT, или делать вручную?Можно сделать и не вручную
Например, есть такая таблица:
CREATE TABLE Temper (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name,temp)
id | name | temp |
1 | 1 | 1 |
2 | 2 | 2 |
34 | 34 | 34 |
56 | 56 | 56 |
Делаем так:
BEGIN TRANSACTION;
-- создаем временную таблицу Temper
CREATE TEMPORARY TABLE Temper_backup(name,temp);
-- копируем данные из таблицы Temper во временную таблицу Temper_backup
INSERT INTO Temper_backup SELECT name,temp FROM Temper;
-- удаляем таблицу Temper
DROP TABLE Temper;
-- создаем таблицу Temper
CREATE TABLE Temper(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name,temp);
-- вставляем данные из таблицы Temper_backup в таблицу Temper
INSERT INTO Temper (name,temp) SELECT name,temp FROM Temper_backup;
-- удаляем таблицу Temper_backup
DROP TABLE Temper_backup;
COMMIT;
-- создаем временную таблицу Temper
CREATE TEMPORARY TABLE Temper_backup(name,temp);
-- копируем данные из таблицы Temper во временную таблицу Temper_backup
INSERT INTO Temper_backup SELECT name,temp FROM Temper;
-- удаляем таблицу Temper
DROP TABLE Temper;
-- создаем таблицу Temper
CREATE TABLE Temper(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name,temp);
-- вставляем данные из таблицы Temper_backup в таблицу Temper
INSERT INTO Temper (name,temp) SELECT name,temp FROM Temper_backup;
-- удаляем таблицу Temper_backup
DROP TABLE Temper_backup;
COMMIT;
и получаем:
id | name | temp |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 34 | 34 |
4 | 56 | 56 |
tsdima писал(а):
Если бы даже такой запрос был, то что делать с остальными таблицами, в которых записано число, соответствующее PRIMARY KEY какой-то записи? Тоже менять? Автоматически? В SQLite такой возможности вроде нет.для подобных случаев можно попробовать создать триггер