Вверх ↑
Ответов: 1891
Рейтинг: 110
#1: 2007-06-11 20:46:33 ЛС | профиль | цитата
nesco, писал(а):
есть запрос на пересчет PRIMARY KEY AUTOINCREMENT, или делать вручную?


Можно сделать и не вручную

Например, есть такая таблица:
CREATE TABLE Temper (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name,temp)


idnametemp
111
222
343434
565656


Делаем так:
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;


и получаем:

idnametemp
111
222
33434
45656


tsdima писал(а):
Если бы даже такой запрос был, то что делать с остальными таблицами, в которых записано число, соответствующее PRIMARY KEY какой-то записи? Тоже менять? Автоматически? В SQLite такой возможности вроде нет.


для подобных случаев можно попробовать создать триггер
карма: 0
%time%
0