Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Derby - ¿Cual es el siguiente valor de un campo auto incremental?

Estas en el tema de Derby - ¿Cual es el siguiente valor de un campo auto incremental? en el foro de Bases de Datos General en Foros del Web. Buenas tardes compañeros, estoy haciendo una pequeña base de datos desde java en Derby. Tengo las siguientes tablas: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE ...
  #1 (permalink)  
Antiguo 01/03/2015, 11:51
 
Fecha de Ingreso: enero-2015
Ubicación: Madrid
Mensajes: 76
Antigüedad: 9 años, 3 meses
Puntos: 5
Derby - ¿Cual es el siguiente valor de un campo auto incremental?

Buenas tardes compañeros, estoy haciendo una pequeña base de datos desde java en Derby. Tengo las siguientes tablas:

Código SQL:
Ver original
  1. CREATE TABLE VENTA(
  2. ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
  3. FECHA VARCHAR(50),
  4. CONSTRAINT primary_key PRIMARY KEY (ID)

Código SQL:
Ver original
  1. CREATE TABLE VENTAS(
  2. ID_VENTAS INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
  3. ID_VENTA INTEGER,
  4. CONSTRAINT FK_ID_VENTA FOREIGN KEY (ID_VENTA) REFERENCES VENTA(ID)

Mi pregunta es: ¿Como puedo saber que valor tendra el campo VENTA.ID antes de hacer el insert?

Un saludo!
  #2 (permalink)  
Antiguo 01/03/2015, 11:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Derby - ¿Cual es el siguiente valor de un campo auto incremental?

Por temas de concurrencia, no puedes saber el valor de un autoincremental antes de realizar el INSERT. Es la inserción la que genera el valor, antes de eso no existe.
Podrías consultar el máximo valor de ese campo en la tabla y sumarle uno, pero si justo antes de ingresar tu registro, otro usuario realizar aun INERT, el valor que habías obtenido le pertenecerá en realidad al registro anterior, y no al tuyo.

¿Se entiende?
Es un problema normal en sistemas concurrentes, y por eso las funciones de los lenguajes obtienen el numero que se generó, y no el que se podría genrear.

Solo sirve consultar el próximo numero si existe un bloqueo de escritura en las tablas, o bien si el sistema es monousuario.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/03/2015, 12:58
 
Fecha de Ingreso: enero-2015
Ubicación: Madrid
Mensajes: 76
Antigüedad: 9 años, 3 meses
Puntos: 5
Respuesta: Derby - ¿Cual es el siguiente valor de un campo auto incremental?

Vale entiendo lo que dices, en mi caso me vale porque solo va a ser un usuario el que va a utilizar la aplicacion.

Muchas gracias!

Etiquetas: auto, campo, siguiente, tabla, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:21.