Buenos días, esteoy teniendo el siguiente inconveniente al correr el siguiente script :
begin work;
SET CONSTRAINTS ALL DEFERRED;
set triggers for sga_det_acta_curs disabled;
set triggers for sga_actas_cursado disabled;
delete from sga_det_acta_curs where sga_det_acta_curs.acta = ‘294’;
delete from sga_actas_cursado where sga_actas_cursado.acta = ‘294’;
set triggers for sga_det_acta_curs enabled;
set triggers for sga_actas_cursado enabled;
SET CONSTRAINTS ALL IMMEDIATE;
commit work;
El error que recibo es el siguiente :
242: Could not open database table (dba.sga_actas_cursado).
106: ISAM error: non-exclusive access.
Les comento las precauciones que tomé :
Verificar que no haya otros usuarios y/o conexiones abiertas.
Pasar a single user.
Reiniciar el servidor.
Igual sigue dando el mismo error, sin embargo en la base de test (de hace solo unos días ) no dá ningún error.
Desde ya muchas gracias por la ayuda.
Raúl Merino
Desde donde estás queriendo ejecutar eso?
probá:
1.- abrir una consola en el servidor
2.- pasar al informix a single user
3.- conectarte con dbaccess (te deja?)
4.- ejecutar esos comandos
5.- salir del dbaccess
6.- volverlo a multiuser
– **************************************************************
– LOCK MODE de la tabla sga_actas_cursado
– **************************************************************
ALTER TABLE sga_actas_cursado LOCK MODE (ROW);
ALTER TABLE log_actas_cursado LOCK MODE (ROW);
set triggers for sga_actas_cursado disabled;
update sga_actas_cursado set estado =‘A’ where sga_actas_cursado.acta = ‘294’;
set triggers for sga_actas_cursado enabled;
Bueno por fin solucionado. Al pretender borrar sin deshabilitar los triggers
me decí que la pk todavía estaba referenciada, busqué en la informacion dela tabla y me apareció la tabla sga_cambios_curpen
en la cual había registros con el acta que yo pretendía borrar. La incluí en el script y borró prefectamente.
muchas veces no funciona hasta que no se hace commit de la transacción. No tengo bien en claro cuando es que funciona y cuando no dentro de la transacción, pero a mi me pasa que a veces funciona y otras no. Quizás tenga que ver con que se modifique la clave principal o no en la transacción.
Hola gente, estoy teniendo este mismo problema (un borrado masivo, con constraints defferred y deshabilitacion de triggers y teniendo problemas con exclusividad de una tabla lateral).
Intenté todo lo que Uds. han sugerido. Inclusive pasarlo a modo exclusivo (oninit -j). El problema es cuando habilito los triggers. Ahí falla todo.
Probé pasar la base a diferentes modos de logging (por si eso estuviera molestando de alguna manera).
Para estos casos, hacer:
BEGIN WORK;
SET CONTRAINTS ALL DEFERRED; – Para que las constraints de FK, CK se evaluen en el COMMIT.
– Deshabilitar los triggers de las tablas involucradas
– Realizar los updates/deletes que necesiten hacer
COMMIT WORK;
– Habilitar los triggers… (que este afuera de la transaccion (begin work - commit work), porque si se pone dentro de la transaccion antes del commit a veces da el error que mencionan…