FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
No existe esa función
si no se ha usado el sistema de autoincremento mediante Trigger y Generador.
Cabe pensar que usando Firebird 3.0 sería más cómodo usar un Incremento de contador automático. Bueno, claramente es posible. Pero con el sistema de Trigger y Generador se tiene esa ventaja. Yo me he decantado por usar esa última modalidad. Desconozco si en caso de usar el novedoso sistema automático de Firebird 3.0, se puede recoger el último número generado mediante esa función GetLastAutoGenValue. ¿Alguien lo sabe? |
#2
|
||||
|
||||
Cita:
Otra cosa distinta es que los componentes que está usando permita hacer uso de ello. De todas formas, si no pone el código que está usando, ni da más información, es difícil ayudar. |
#3
|
|||
|
|||
Utilizo Firebird 3, y el campo clave ID es un AUTOINCREMENT IDENTITY COLUMN
El código que utilizo, lo puse antes arriba, es el siguiente, lo ejecuto en un FDQuery
|
#4
|
||||
|
||||
Cita:
|
#5
|
|||
|
|||
Firebird 3.0 Generalidades de las columnas tipo IDENTITY
En firebird 3.0 se introdujo el uso de las columnas tipo IDENTITY, este tipo de campos producen identificadores únicos en la columna declarada utilizando un generador interno; para soportar este tipo de columnas se han agregado un par de campos a la tabla RDB$RELATION_FIELDS:
Ahora bien, al momento de declarar una columna de tipo IDENTITY no es necesario crear el disparador, tampoco creamos un generador por nuestra cuenta, todo esto se realiza internamente por el motor de Firebird 3. Sin embargo, el generador existe, y para obtener el valor actual del generador que le fue asignado a nuestro columna, primero debemos averiguar que nombre le ha puesto Firebird a dicho generador, para lo cual, realizamos una consulta a la tabla RDB$RELATION_FIELDS de la siguiente manera: El resultado de esta consulta nos arrojará el nombre del generador que se le ha asignado a la columna ID en la tabla TABLA_X (supongamos que el resultado fue RDB$3), enseguida solo resta ejecutar las instrucciones ya conocidas para el manejo e incremento de generadores: Para obtener el valor actual del generador usando instrucciones SQL: Desde Delphi:
Para obtener el siguiente valor del generador
A partir de Firebird 2.0 se recomienda usar NEXT VALUE FOR en lugar de GEN_ID(<NombreGenerador>, <Incremento>) a menos que se desee incrementar el generador en un valor diferente a 1 Finalmente, una vez que hemos identificado el nombre del generador de nuestra columna IDENTITY podemos obtener el valor del generador mientras se ejecuta la sentencia INSERT, por ejemplo:
Desde delphi usando las propiedades del componente FDQuery
gpImmediate incrementa en 1 el valor del generador RDB$3 justo en el momento en el que se inserta un nuevo registro en la tabla, y le asigna el valor obtenido al campo ID, sin la necesidad de incluir la instrucción NEXT VALUE FOR en la sentencia SQL |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
FireDAC - Problema con relación Maestro/detalle y columna AutoInc | jarlos | Conexión con bases de datos | 4 | 01-06-2016 05:32:27 |
Asignar el valor de un campo AutoInc definido en un tirgger_BI | KAYO | Firebird e Interbase | 1 | 23-09-2008 17:47:05 |
campo autoinc | teclilla | Tablas planas | 3 | 14-06-2008 02:10:52 |
obtener el valor de un campo (Tquery) | Yoli | Conexión con bases de datos | 5 | 08-04-2005 22:07:05 |
Recuperar autoinc. después de Insert to | aig | MS SQL Server | 2 | 22-09-2004 10:41:28 |
|