Si, el tema que ese dato se encuentra en otras tablas que tienen foreign key con esa tabla y por eso no te deja cambiarlo.
¿Es un libro de actas de examen?
Se puede, hay que abrir una transaccion, desahbilitar los constraints de foreign key, cambiar ese dato en todas la tablas donde se encuentre esa columna de libro de actas y cerrar la transaccion, algo asi:
BEGIN WORK;
SET CONTRAINTS ALL DEFERRED; -- Hace que no valide las fk cuando cambies el valor en la tabla de libros de actas
UPDATE sga_libros_de_acta SET libro = xxxx WHERE libro = yyyy;
UPDATE sga_actas_examen SET libro = xxxx WHERE libro = yyyy;
UPDATE sga_actas_promo SET libro = xxxx WHERE libro = yyyy;
COMMIT WORK;
-------------------------------------------------------------------------------------------
Para poder saber que tablas hacen referencia (por medio de una foreign key) a la tabla "sga_libros_de_actas" debes correr la siguiente consulta:
SELECT st.tabname,
informix.sysreferences.ptabid,
informix.sysreferences.delrule,
informix.systables.tabname,
informix.systables.tabid,
informix.sysconstraints.constrid,
informix.sysconstraints.constrname,
informix.sysconstraints.constrtype,
informix.sysconstraints.idxname,
informix.sysindexes.idxtype,
informix.sysreferences.primary
FROM informix.sysconstraints,
informix.systables,
informix.sysindexes,
informix.sysreferences,
informix.systables st
WHERE ( informix.systables.tabid = informix.sysconstraints.tabid ) and
( informix.sysconstraints.idxname = informix.sysindexes.idxname ) and
( informix.sysconstraints.constrtype = 'R') and
( informix.sysconstraints.constrid = informix.sysreferences.constrid ) and
( informix.sysreferences.ptabid = st.tabid ) and
( informix.systables.tabid >= 100 ) and st.tabname = 'sga_libros_de_acta'