Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Error Raro al Usar IBX's sobre Firebird 2.0

Desinstale Firebird 1.53 para instalar la versión final 2.0, al querer abrir un Dataset manualmente (IBX's) me salta el siguiente error al abrir dicho dataset:
Código:
Exception class EIBInterbaseError with message 'attempted update of read-only column'
Al parecer el error se refiere de que posiblemente tengo algún campo de sólo Lectura, pero ya revise el Dataset y no hay ninguno, inclusive, esto mismo me pasa con los fibPlus Ver. 6.3

Será que ya llego el Final por completo para los IBX's apartir de la Versión 2.0 de Firebird????

Agradezco cualquier sugerencia
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #2  
Antiguo 14-11-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Que Raro

El problema ahora se debe a un trigger que tengo, al estar investigando me encontre que el error se debía a que :
Código:
In Firebird 2.x I'm getting the error "General SQL error. 
Attempted update of read-only column" in code that used to work in v.1.5.3. 
I'm not using any computed fields. Is this a bug?

You have a trigger somewhere that is referring to a NEW or OLD 
context variable in the wrong context. 
From v.2.0, you will get this exception if, for example, 
you try to assign to NEW.Afield in an After Update trigger.
Revisando en mis trigger's sobre la tabla en donde me marca error, me percato que al recompilar cada trigger en uno de ellos me marca el mismo error:

Código:
This column cannot be updated because it is derived from an SQL function or expression.
attempted update of read-only column.
Y Precisamente si desabilito la línea siguiente:
Código SQL [-]
 /* New.FECINI_PROM = Null;*/

Al recompilar el trigger ya no me marca error, ya no esta permitido asignar Nulos a los campos DATE ????

Previamente Hize un BackUp y un Restore con la versión 2.0 de Firebird
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King

Última edición por AGAG4 fecha: 14-11-2006 a las 17:35:05.
Responder Con Cita
  #3  
Antiguo 14-11-2006
tefots tefots is offline
Miembro
 
Registrado: feb 2005
Posts: 108
Poder: 20
tefots Va por buen camino
yo pensaba que como ibx esta ya bastante tiempo abandonado , no era compatible con firebird 2.0 ,
no sera eso ?.
Responder Con Cita
  #4  
Antiguo 14-11-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Ya comprobe....

Ya comprobe que no son los IBX's, es problema de la versión 2.0, como comente arriba, tengo un trigger que se dispara en el After Update de una tabla y al recompilarlo me marca ese error, y si desabilito la linea:
Código:
 /* New.FECINI_PROM = Null;*/
Ya puedo compilarlo sin problemas.....

Lo que me hace falta es CREAR de nuevo la Base de Datos desde cero y pasar los datos con el DataPump, espero que con esto quede resuelto....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #5  
Antiguo 06-08-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Version 2

Revivo este antiguo hilo para comentar que me ha pasado lo mismo ahora mismo...

Resulta que no se puede asignar un nuevo valor de la tabla afectada en un trigger AFTER UPDATE.

Cita:
Why don't my triggers fire? For example, I have an AFTER UPDATE trigger that is supposed to update a flag: new.Flag = 'T'; but it never happens!
AFTER triggers cannot be used to set values on the row: the NEW values are read-only at this point.

A BEFORE action trigger fires before the action, followed by constraints, then the action, then AFTER triggers. If a posted operation is cancelled by a ROLLBACK, all of the actions, including the triggered actions, will be undone. The whole package -- BEFORE action triggers, action, and AFTER action triggers and any other changes caused by the changes -- is atomic, which means it will succeed or fail as a unit.
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #6  
Antiguo 06-08-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Precisamente es eso mismo lo que estamos revisando en nuestras bases de datos para pasar definitivamente a la versión 2 a nuestros clientes.
Responder Con Cita
  #7  
Antiguo 06-08-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Que casualidad. Va a resultar que yo también soy "divino"
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #8  
Antiguo 06-08-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ArdiIIa Ver Mensaje
Que casualidad. Va a resultar que yo también soy "divino"
Por supuesto, nadie lo duda
Responder Con Cita
  #9  
Antiguo 07-08-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Entonces a fuerzas se tienen que modificar los Trigger's donde hay asignaciones en campos de tablas ????
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #10  
Antiguo 07-08-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Tal como comenta el texto que puse como referencia, en los triggers AFTER UPDATE, no se pueden asignar valores a la tabla en cuestión, dado que el mismo Firebird salta con el error relatado.
De hecho, yo cuando modifico un trigger, este se compila bien, pero cuando le doy al commit para que queden registrados los cambios del procedure, es cuando salta el error.
Cita:
the NEW values are read-only at this point.
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #11  
Antiguo 07-08-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Ibx no tiene un buen soporte para firebird 2.x les puede suceder cualquier cosa rara.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #12  
Antiguo 24-01-2008
madmai madmai is offline
Miembro
 
Registrado: oct 2005
Posts: 117
Poder: 19
madmai Va por buen camino
ocurre cuando

Esto ocurre cuando utilizas la variable new en los trigers y le asignas valor, no solamente cuando le asignas null,

Última edición por madmai fecha: 24-01-2008 a las 11:48:26.
Responder Con Cita
  #13  
Antiguo 24-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Aplicad la lógica:

En un trigger BEFORE insert, todavía no ha ocurido la inserción, por eso no tiene sentido la variable old, porque "antes" del trigger, no hay valores.

En un trigger AFTER insert, ya ha ocurrido la acción de inserción/borrado o lo que sea...., no tiene sentido la variable New.

Un BEFORE UPDATE podría confundir, porque realmente si tiene valores antes y después del Trigger, pero Firebird funciona así.


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #14  
Antiguo 24-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
En un trigger AFTER insert, ya ha ocurrido la acción de inserción/borrado o lo que sea...., no tiene sentido la variable New.
Claro que tiene sentido, para conocer los valores (por ejemplo, para llevar una auditoría). Lo que no tiene sentido es tratar de modificar el valor de algún campo.

Cita:
Empezado por Lepe Ver Mensaje
Un BEFORE UPDATE podría confundir, porque realmente si tiene valores antes y después del Trigger, pero Firebird funciona así.
Esto no lo entendí muy bien.

En el before/after update está disponible tanto el registro NEW como el OLD. En el befire pueden modificarse los valores del NEW, no así en el after. Los valores del OLD no pueden modificarse nunca.

En el before/after delete está disponible el registro OLD, pero no puede modificarse bajo ninguna circunstancia.

Hasta ahora descubro que versiones anteriores de firebird no daban error cuándo se trataba de modificar estos valores. No recuerdo haberme topado nunca con esos errores al cambiar de versión del motor.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #15  
Antiguo 24-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pos eso, lo que yo dije

Mi comentario es más bien una regla nemotécnica. Cuando leí esas normas de funcionamiento por primera vez, de manos de Hellen Borrie en un perfecto inglés , me hice tal lío mental que tuve que buscarle "una regla".

Cuando digo "no tiene sentido" me refiero a "no tiene sentido la modificación de esa variable".

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #16  
Antiguo 24-01-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Tomado del release Notes de firebird 2.0

"OLD Context Variables Now Read-only
D. Yemanov
The set of OLD context variables available in trigger modules is now read-only. An attempt to assign
a value to OLD.something will be rejected.

Note:
NEW context variables are now read-only in AFTER-triggers as well."

Pag 51.
Responder Con Cita
  #17  
Antiguo 09-02-2008
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Más Claro que el agua no pudo estar....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #18  
Antiguo 01-10-2008
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
En que lio me metio firebird, tengo que cambiar todas las modificaciones de todos los triggers del after update al before update

Disculpen la tardanza pero estoy retomando esto de nuevo....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error Raro sobre archivo "ntdll.dll" que no consigo encontrar el motivo AGAG4 Impresión 1 23-11-2007 07:11:17
Error Firebird sin Explicacion , Demasiado Raro hot1974 Firebird e Interbase 10 05-10-2006 15:44:35
Comportamiento raro de Firebird en Starting With AGAG4 Firebird e Interbase 6 07-06-2006 16:10:56
Un error raro..... Rafe Varios 3 28-07-2005 23:07:02
URGENTE: Error raro en Firebird burasu Firebird e Interbase 3 14-07-2004 13:19:25


La franja horaria es GMT +2. Ahora son las 22:21:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi