Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   Campo autoincremental en Oracle (https://www.clubdelphi.com/foros/showthread.php?t=3346)

Onti 03-09-2003 15:27:31

Campo autoincremental en Oracle
 
Hola:

Necesito saber como definir un campo que autoincrmente y como usarlo.

Gracias

delphi.com.ar 03-09-2003 15:44:40

Puedes crear una secuencia y mediante un trigger "BEFORE INSERT" asignarle el valor de secuencia.nextval al campo que desees. Es una lastima que no se puedan usar secuencias como default value de un campo.

Saludos!

ingacg 19-09-2003 21:22:31

exacto, o bien puedes hacerlo por sql

insert into tabla(campo_incrementable) values (secuencia.nextval)

donde la secuencia la creas con la orden create sequence...

Al González 15-02-2004 20:07:27

¡Buen día a todos!

Al hacer esto con DataSet.Post, ¿se mostrará el valor del campo autoincremental en pantalla automáticamente, como sucede con las bases de datos de escritorio?

Pregunto esto porque tengo un caso similar cliente/servidor, donde deseo que después del Post se vea en el DBGrid donde inserté el registro, el valor que obtuvo el campo autoincremental (y que el objeto campo TIntegerField realmente tenga ese valor después del Post).

http://www.clubdelphi.com/foros/showthread.php?t=7408

Muchas gracias.

Al González :).

jachguate 21-02-2004 18:59:18

Hola Al. No habia visto tu pregunta antes, y no veo la relación con el post al que redirigis en el mensaje.

Con relación a tu planteamiento... al obtener el valor de la secuencia en el evento OnPost del dataset tenes la ventaja que no solo es mostrado en pantalla, sino que Delphi - si trabajas con el BDE o con la mayoría de componentes de acceso a datos que se basan en el PK para identificar los registros - podrá refrescar el registro y mantener el puntero del dataset en este.

Si trabajas con datos en cache, existe la posibilidad que se creen huecos en la secuencia (por eso no lo utilizo para numerar documentos legales, por ejemplo), pues aún despues de hacer el Post, el usuario puede "arrepentirse" y cancelar las actualizaciones en el cache.

Espero haber resuelto en algo tu inquietud.

Hasta luego

;)

Al González 25-02-2004 04:59:11

Solucionado con GeneratorField
 
¡Buen día a todos!

Gracias Antonio.

Lo he solucionado con la propiedad GeneratorField de los IBX. En ella puedo especificar qué generador deseo que se ejecute, para cuál campo y en qué momento.

Lo que pasa es que en un principio creí que por el simple hecho de tener la tabla un generador y un disparador, el valor autoincrementado que asignaba el motor de la base de datos debía mostrarse automáticamente en pantalla después de haber guardado un nuevo registro. Lo cuál después comprendí que no es así, porque el servidor de la base de datos no tiene la obligación de avisar al cliente de esas asignaciones internas. Es hasta la siguiente lectura del registro cuando ya se obtendrá el valor dado al campo por el disparador.

Un abrazo.

Chao.

Al González :).


La franja horaria es GMT +2. Ahora son las 11:27:20.

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