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 такой возможности вроде нет.для подобных случаев можно попробовать создать триггер



Поиск
Друзья
Администрация