Spanish: Translate you.
La verdad es que no se si he entendido bien el problema.
Tienes varias tablas, y quieres modificar la CLAVE en todas.
En la tabla principal, es la clave primaria.
En el resto de tablas, es la clave foranea.
Da igual el motivo por lo que necesitas hacer esto, lo cual cuesta entender, pero tu mandas.
Debes
1º Crear un campo adicioinal en la tabla principal
2º Hacer un update de la clave principal para llevar ese valor, al nuevo campo creado en la tabla principal.
3º Desactivas las actualizaciones en cascada
4º Haces el update de la tabla principal
5º Haces el update del resto de las tablas.
6º Vuelve a crear o activar la integridad referencial.
Al final, lo que vas a hacer ,es lo que hace el sistema, pero lo haces tu a mano, posiblemente sea mas eficiente que el propio sqllite.
Doy por hecho que tienes INDICES ne todas las tablas, de las clave foraneas.
Script para SQL SERVER (En este código falta la integridad referencial. Desconozco como se desactiva o si es posible hacerlo en SQLITE, pero algo vi de pragma que quizás sea lo que puede hacer que lo desactive).
--DROP TABLE T1
Create table T1 (KEYOLD NVARCHAR(10), VALUE NVARCHAR(10), PRIMARY KEY(KEYOLD) )
insert into t1(keyold, value) values (
insert into t1(keyold, value) values (
insert into t1(keyold, value) values (
--DROP TABLE T2
CREATE table T2(IDREGISTRO INT, KEYOLDFK NVARCHAR(10), VALOR NVARCHAR(10), PRIMARY KEY (IDREGISTRO))
INSERT INTO T2(IDREGISTRO ,KEYOLDFK, VALOR) VALUES (1,
INSERT INTO T2(IDREGISTRO ,KEYOLDFK, VALOR) VALUES (2,
INSERT INTO T2(IDREGISTRO ,KEYOLDFK, VALOR) VALUES (3,
ALTER TABLE T1 ADD NEWKEY NVARCHAR(10)
UPDATE T1 SET NEWKEY = KEYOLD
UPDATE T1 SET NEWKEY =
UPDATE T1 SET NEWKEY =
UPDATE T1 SET NEWKEY =
UPDATE T2
SET T2.KEYOLDFK = T1.NEWKEY
FROM T2 LEFT JOIN T1 ON T2.KEYOLDFK = T1.KEYOLD
SELECT * FROM T2