El valor del ID autogenerado no se conoce hasta después de que se ejecute la instrucción INSERT, ya que otros estados podrían ejecutando al mismo tiempo y el RDBMS puede decidir cómo programar cuál va primero.
Cualquier función que llame en una expresión en la instrucción INSERT deberá evaluarse antes de insertar la nueva fila y, por lo tanto, no puede saber qué valor de ID se genera.
puedo pensar en dos opciones que están cerca de lo que preguntas:
para tu dispositivo disparador que se ejecuta después de INSERT, por lo que tiene acceso al valor de clave de identificación generado.
Escriba un procedimiento para envolver la inserción, para que pueda ejecutar otro código en el procedimiento y consultar la última ID generada.
Sin embargo, sospecho que lo que realmente está pidiendo es si se puede consultar por el último valor de ID generado por la sesión actual aunque otras sesiones también están insertando filas y generar sus propios valores de ID. Puede estar seguro de que cada RDBMS que ofrece un servicio de autoincremento ofrece una forma de consultar este valor, y le informa la última ID generada en su ámbito de sesión actual. Esto no se ve afectado por las inserciones realizadas en otras sesiones.
¿Puede dar un ejemplo de lo que quiere hacer, suponiendo que fuera posible ? – skaffman
Por supuesto. Considere la tabla vacía A (id [autoincrement], campo). Me gustaría algo como: long id = jdbcStatement.execute ("insertar en A (campo) values ('blah')"); o ID largo = jdbcStatement.execute ("insertar en A (id, campo) valores (sequence.nextval, 'blah')"); Quiero id = 1, y todo hecho en un solo acceso a DB –
+1 Buena pregunta y útil al insertar objetos que están vinculados por Java. –