Recién leo este hilo… aunque no lo crean estaba aburrido así que me puse a mirar el foro… una pena que no haya sido antes, pero igual posteo por si ayuda a alguien más 
el primer error:
[Informix][Universal Server][dbalumnado_123] SQL Error (-692) : Key value for constraint (dba.pk_titulos_plan) is still being referenced.
Ya te dijeron que era porque el id del titulo que intentas actualizar esta siendo referenciado en tablas que dependen de la tabla que estas actualizando.
Usando “set constraints all deferred” te ahorras bastante… podés actualizar las tablas en cualquier orden.
Con la consulta que dejo a continuación averiguás las tablas con una columna llamada ‘titulo’ de tipo varchar(5) (en mi caso particular tengo 19 tablas con ese campo):
select tabname from systables where tabid in (
select tabid from syscolumns where colname='titulo' and coltype=269 and collength=5
) and tabtype='T';
Con eso solo tenés que determinar si debes actualizar todas esas tablas o si en alguna el campo se llama igual, es del mismo tipo, pero no tiene relación.
Si no querés hacer ese análisis podrías usar alguna herramienta case que haga ingenieria inversa, te arme el DER y ver gráficamente todas las dependencias.
Si no dispones de esos recursos, podrías escribir una consulta que haga lo que las herramientas case o parecido… te dejo un ejemplo 
-- tablas que referencian a la tabla sga_titulos
select r.constrid, c.tabid, t.tabname
from sysreferences r
inner join sysconstraints c on r.constrid = c.constrid
inner join systables t on t.tabid = c.tabid
where r.ptabid = (select tabid from systables where tabname='sga_titulos');
-- me devuelve 2 tablas: sga_titulos_otorg sga_titulos_plan
-- y para esas tablas:
select r.constrid, c.tabid, t.tabname
from sysreferences r
inner join sysconstraints c on r.constrid = c.constrid
inner join systables t on t.tabid = c.tabid
where r.ptabid in (select tabid from systables where tabname in ('sga_titulos_otorg','sga_titulos_plan'));
--me devuelve 6 tablas: sga_areas_x_titulo sga_cmb_tit_otorg sga_menc_tit_otorg sga_orie_tit_otorg sga_tit_otor_form sga_orientaciones
En resumen, debes actualizar todas las tablas en que se use el ID que estás intentando cambiar. Con que en 1 sola tabla siga existiendo el viejo ID te dará error…
Como para que quede en el foro dejo un ejemplo de referencias cruzadas… si intentan insertar sin usar verificación recién al fin de la transacción les dará error porque usan referencias cruzadas… pero más que mil palabras que escriba dice un ejemplo:
-- creo 3 tablas de ejemplo:
CREATE TABLE prueba1 (
c1 varchar(10) not null,
x1 date,
x2 varchar(30),
c2 integer
);
CREATE TABLE prueba2 (
c2 integer not null,
x3 varchar(30),
c3 char(5)
);
CREATE TABLE prueba3 (
c3 char(5) not null,
x4 varchar(30),
c1 varchar(10)
);
-- les declaro sus claves primarias
ALTER TABLE prueba1 ADD CONSTRAINT PRIMARY KEY (c1) CONSTRAINT pk_prueba1;
ALTER TABLE prueba2 ADD CONSTRAINT PRIMARY KEY (c2) CONSTRAINT pk_prueba2;
ALTER TABLE prueba3 ADD CONSTRAINT PRIMARY KEY (c3) CONSTRAINT pk_prueba3;
-- les declaro referencias cruzadas
ALTER TABLE prueba1 ADD CONSTRAINT (FOREIGN KEY (c2) REFERENCES prueba2 CONSTRAINT fk_prueba1_prueba2);
ALTER TABLE prueba2 ADD CONSTRAINT (FOREIGN KEY (c3) REFERENCES prueba3 CONSTRAINT fk_prueba2_prueba3);
ALTER TABLE prueba3 ADD CONSTRAINT (FOREIGN KEY (c1) REFERENCES prueba1 CONSTRAINT fk_prueba3_prueba1);
-- intento cargar datos de prueba (esto dará error)
INSERT INTO prueba1 (c1, x1, x2, c2) VALUES ('CLAVE C1 1', CURRENT, 'prueba', 1);
INSERT INTO prueba2 (c2, x3, c3) VALUES (1, 'otra prueba', 'C3001');
INSERT INTO prueba3 (c3, x4, c1) VALUES ('C3001','+ pruebas','CLAVE C1 1');
-- creo un SP que inserta bien :D
create procedure cargar_prueba()
begin work;
set constraints all deferred;
INSERT INTO prueba1 (c1, x1, x2, c2) VALUES ('CLAVE C1 1', CURRENT, 'prueba', 1);
INSERT INTO prueba2 (c2, x3, c3) VALUES (1, 'otra prueba', 'C3001');
INSERT INTO prueba3 (c3, x4, c1) VALUES ('C3001','+ pruebas','CLAVE C1 1');
set constraints all immediate;
commit work;
end procedure;
-- ejecuto una prueba
execute procedure cargar_prueba();
-- veo el resultado
select * from prueba1;
select * from prueba2;
select * from prueba3;
-- borro tablas de prueba
drop table prueba1;
drop table prueba2;
drop table prueba3;