Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Error creación trigger en InterbaseExpert (https://www.clubdelphi.com/foros/showthread.php?t=73774)

coej 16-05-2011 16:01:21

Error creación trigger en InterbaseExpert
 
HOla a todos de nuevo, aquí sigo pataleando con delphi, firebird y interbase expert...
Os cuento mí nuevo problema, estoy intentando crear unos procedimientos en interbaseexpert(después de crear una tabla banco)
Con un codigo integer(not null ) y primary key...
fecha, y nombrebanco(ambos varchar).
Hasta ahí todo bien, ahora quiero crear un autoincremental en el código del banco(Primero marco un crear generador, y después crear trigger), pero cuando pulso ok, me da error...
Yo marco crear generador
pero ibexpert me crea sequence, y no se porque y me da error en ese comando
CREATE SEQUENCE BANCOS_ID...
Pero no encuentro ningún sitio donde retocar ese valor...
alguna sugerencia?
este s el error
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 7.
SEQUENCE.
y este el comando que me genera
CREATE SEQUENCE GEN_BANCOS_ID
gracias.

guillotmarc 16-05-2011 16:05:42

Hola.

¿ Cual es la sentencia exacta que utilizas para crear el generador, y cual es el mensaje de error que te devuelve ?.

Saludos.

coej 16-05-2011 16:20:07

Código SQL [-]
CREATE SEQUENCE BANCOS_ID
Pero no la genero yo, la genera ibexpert, yo edito el campo codigo en ibexpert, y elijo la casilla autoincrement, en esa pestaña elijo create_generator, y en la siguiente pestaña trigger, marco create trigger, es todo automático de ibexpert... yo no pongo nada a pelo...
Y el error me lo marca en la palabra sequence, que es la que me pone ibexpert, yo pensaba que me pondría
Código SQL [-]
CREATE GENERATOR BANCOS_ID

Casimiro Notevi 16-05-2011 16:46:29

Fíjate si estás creando una BD con dialecto 1 ó 3.

coej 16-05-2011 16:50:03

Dialecto 1, aunque puedo probar a dialecto 3, si es eso...
La verdad es que estoy siguiendo una guia en la que utiliza firebird 1.5...
Pero no creo que eso afecte mucho, o si???
Tampoco tiene nada de raro, una tabla, un campo clave integer y crear el autoincremental con un trigger, tampoco veo por donde puede fallar...

En la guia el lo crea con server local la base de datos, y a mí me da error , tengo que crearla como remote , server localhost...

Casimiro Notevi 16-05-2011 16:57:44

Sí, creo recordar que esas nuevas instrucciones son válidas para los firebird siguientes al 1.5 y con dialecto 3. Aunque no lo puedo confirmar ahora mismo.

ecfisa 16-05-2011 16:58:25

Hola.
Cita:

La verdad es que estoy siguiendo una guia en la que utiliza firebird 1.5...
Pero no creo que eso afecte mucho, o si???
Yo creo que sí, la guía está basada en Firebird 1.5 y SECUENCE según entiendo es soportado a partir de Firebird 2.x

Saludos.

Edito: No vi tu post Casimiro, pero creo recordar lo mismo...

guillotmarc 16-05-2011 17:04:56

Cita:

Empezado por coej (Mensaje 400160)
Dialecto 1, aunque puedo probar a dialecto 3, si es eso...
La verdad es que estoy siguiendo una guia en la que utiliza firebird 1.5...
Pero no creo que eso afecte mucho, o si???
Tampoco tiene nada de raro, una tabla, un campo clave integer y crear el autoincremental con un trigger, tampoco veo por donde puede fallar...

En la guia el lo crea con server local la base de datos, y a mí me da error , tengo que crearla como remote , server localhost...

Dialecto 1 es solo un modo para compatibilidad con versiones muy antiguas de Interbase. Para cualquier desarrollo actual deberías usar el Dialecto 3.

También te recomiendo que utilices Firebird 2.5 (el último Firebird disponible), puesto que todo lo que encontrarás en la guía de Firebird 1.5 es aplicable igualmente para Firebird 2.5, y podrás disfrutar de un gran conjunto de mejoras.

Saludos.

coej 16-05-2011 17:17:33

Estoy usando firebird 2.5, e interbaseexpert personal edition version 29.03.2011
Lo de la guia es lo de menos,
Registro una bd , como local con server version firebird 2.5, marco el user y password, y no toco nada más, después creo la bd con los mismos datos(al path me refiero)
y después creo una tabla, bancos
campos
codigo integer
fecha varchar 20
banco varchar 100
Creo la tabla, y sin problemas
pico dos veces en el campo código, en la ventana de edición
pulso la pestaña autoincrement, en la subpestaña generator,lo marco y pongo que la secuencia inicial sea 1, en la siguiente subpestaña trigger, marco create trigger...
Pulso ok, me da el error de create sequence que indico...???? no se que estaré haciendo mal...

Casimiro Notevi 16-05-2011 17:23:24

Cita:

Empezado por coej (Mensaje 400160)
Dialecto 1, aunque puedo probar a dialecto 3, si es eso...
La verdad es que estoy siguiendo una guia en la que utiliza firebird 1.5...
Pero no creo que eso afecte mucho, o si???

Cita:

Empezado por coej (Mensaje 400168)
Estoy usando firebird 2.5, e interbaseexpert personal edition version 29.03.2011

Para empezar tendrás que aclararte bien qué es lo que estás usando.

coej 16-05-2011 17:28:09

Lo que pongo antes(Estoy usando firebird 2.5, y para crear la bd como programa para manejar firebird graficamente interbase personal edition...)
He probado con dialecto 1 y 3, y en los dos me lanza los mismos errores...

Lo que ponía antes es que la guia que estoy siguiendo , el que la hizo los pantallazos , están contra firebird 1.5, lo he mencionado por si ese cambio de versión afectaba para los errores...

ecfisa 16-05-2011 17:40:23

Hola coej.

Es extraño con Firebird 2.5, dialect 3 e IBExpert no recibí nunca un mensaje de error sobre secuence. Realmente no sé que puede estar pasando...

Te pongo un enlace donde aclara el uso de secuence y generator: GENERATOR/SECUENCE

Y otro sobre como cambiar de dialecto a la base de datos: Setting Database Dialect

Tal vez encuentres respuesta en alguno de ellos.


Saludos.

guillotmarc 16-05-2011 17:44:22

Cita:

Empezado por coej (Mensaje 400170)
Lo que pongo antes(Estoy usando firebird 2.5, y para crear la bd como programa para manejar firebird graficamente interbase personal edition...)
He probado con dialecto 1 y 3, y en los dos me lanza los mismos errores...

Lo que ponía antes es que la guia que estoy siguiendo , el que la hizo los pantallazos , están contra firebird 1.5, lo he mencionado por si ese cambio de versión afectaba para los errores...

Perfecto. A partir de ahora utiliza solo el Dialecto 3 (como te comentaba antes, el Dialecto 1 solo se usa para compatiblidad con versiones muy antiguas, olvídate de él).

Seguimos esperando a que nos indiques el mensaje de error exacto que te aparece al intentar crear el generador.

Saludos.

coej 16-05-2011 17:59:53

---------- STATEMENT ----------

CREATE SEQUENCE GEN_BANCOS_ID


---------- ERROR MESSAGE ----------

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 7.
SEQUENCE.



Este es el error exacto, de hecho no me pone nada del código del trigger, es como si no llegara a el, el error lo genera antes, ya que no me genera la secuencia(o al menos eso es lo que yo entiendo)...
Pero vuelvo a comentar, que yo no pongo nada a pelo, estoy siguiendo el "asistente" de ibexpert, creando el generador con inicio de secuencia 1 y el trigger marcando la casilla, yo no escribo nada de código...

guillotmarc 16-05-2011 18:01:11

Cita:

Empezado por guillotmarc (Mensaje 400172)
Seguimos esperando a que nos indiques el mensaje de error exacto que te aparece al intentar crear el generador.

Aunque me temo que tu problema es que la base de datos sigue en Dialecto 1, y solo estás cambiando su registro en IB-Expert (lo cual no cambia para nada la base de datos misma).

Para cambiar la base de datos a Dialecto 3, una buena forma de hacerlo es creándola de nuevo. Puedes usar la opción Extract Metadata, en el menú Tools de IB-Expert, para generar el Script que va a regenerar tu base de datos.

Saludos.

guillotmarc 16-05-2011 18:08:44

Hola.

Cita:

Empezado por coej (Mensaje 400176)
---------- STATEMENT ----------

CREATE SEQUENCE GEN_BANCOS_ID


---------- ERROR MESSAGE ----------

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 7.
SEQUENCE.



Este es el error exacto, de hecho no me pone nada del código del trigger, es como si no llegara a el, el error lo genera antes, ya que no me genera la secuencia(o al menos eso es lo que yo entiendo)...
Pero vuelvo a comentar, que yo no pongo nada a pelo, estoy siguiendo el "asistente" de ibexpert, creando el generador con inicio de secuencia 1 y el trigger marcando la casilla, yo no escribo nada de código...

En efecto no te acepta la sentencia de creación del generador.

Lo más probable es que aún tengas la base de datos en Dialecto 1, como te comentaba anteriormente. Yo no sé de que haya alguna forma de cambiar el Dialecto de una base de datos existente, así que te recomiendo que vuelvas a crear tu base de datos (esta vez indicando Dialecto 3 desde el principio).

NOTA: Por cierto, yo normalmente utilizo el CREATE GENERATOR, aunque el CREATE SEQUENCE debería hacer exactamente lo mismo. No está de más probar :

CREATE GENERATOR GEN_BANCOS_ID;

Saludos.

coej 16-05-2011 18:16:07

Si lo raro es que yo estoy escogiendo create generator, no se porque me pone sequence????

y acabo de crear registrar una nueva bd, con otro nombre, con dialecto 3, y al crear el generador y luego la secuencia, me sigue dando el mismo error..:(

Para poner otro error por si ayuda a identificar este, lo siguiente es crear procedures, y al crearla, me da error en la palabra or del create or alter procedure...
¿¿¿¿

guillotmarc 16-05-2011 19:14:34

Pon esta sentencia en el SQL Editor, y ejecútala : CREATE GENERATOR GEN_BANCOS_ID;

¿ Se crea correctamente el generador ?.

Las sentencias CREATE PROCEDURE las tienes que poner en el Script Executive (ya que hay más de una sentencia involucrada).

Saludos.

coej 16-05-2011 21:57:52

Si, se genera correctamente la sentencia con el sql editor...
Y a continuación puedo genera el trigger desde la edición del campo...
Lo que no entiendo es porque no puedo hacerlo de la otra forma, y porque no me reconoce el comando sequence...
Después he intentado eliminar el trigger, y el generator, el trigger lo he podido eliminar, pero el generator, no me deja
ni con
Código SQL [-]
drop generator GEN_BANCOS_ID;
ni con
Código SQL [-]
drop sequence GEN_BANCOS_ID;
En el editor de sql, no me reconoce ni generator, ni sequence, me da error en ese comando...

Con respecto a las procedures, no se pueden crear con botón derecho sobre el arbol de la izquierda y generarlo???, en la guia que he seguido los genera asi...

Gracias por la respuesta guillotmarc, al menos así puedo generar el trigger, luego probare con el procedure donde me comentas, pero es un fastidio que no funcione por el que creo que debería ser su funcionamiento normal...

Casimiro Notevi 16-05-2011 22:14:19

También puede ser que esa versión de ibexpert tenga algún bug en ese apartado, suele ocurrir a veces, es uno de los motivos por los que sacan versiones nuevas muy seguidas.


La franja horaria es GMT +2. Ahora son las 00:04:15.

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