Autor Tema: error (-692)  (Leído 513 veces)

0 Usuarios y 1 Visitante están viendo este tema.

folmedo

  • Newbie
  • *
  • Mensajes: 8
    • Ver Perfil
  • Institución: universidad nacional de formosa
  • Nombre y apellido: Federico Hernan Olmedo
  • Sistema: siu guarani
  • Teléfono laboral: 3704-454009/454004
  • Utilizo algun sistéma del SIU: Sí
error (-692)
« on: Abril 24, 2019, 04:29:20 pm »
Estimados consulto ¿se podria cambiar o actualizar el codigo de un libro mal cargado?Pues lo intente desde la bace de datos y me da ese error .SALUDOS CORDIALES

Ignacio Bisso

  • Moderador Global
  • *****
  • Mensajes: 245
    • Ver Perfil
    • Email
  • Institución: SIU
  • Nombre y apellido: Ignacio Bisso
Re:error (-692)
« Respuesta #1 on: Abril 24, 2019, 04:41:41 pm »
Hola Federico,

Podrias poner aqui como intentaste cambiarlo y el mensaje de error
saludos
ignacio

Alejandro Delú

  • Moderador Global
  • *****
  • Mensajes: 7338
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Alejandro Delú
  • Sistema: Guaraní
Re:error (-692)
« Respuesta #2 on: Abril 24, 2019, 04:52:50 pm »
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:

Código: [Seleccionar]
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:
Código: [Seleccionar]
  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'