Con SQLServer, parece generalmente aceptado que agregar un SELECT SCOPE_IDENTITY() al final de su inserción es la mejor manera de devolver el PK del registro recién insertado, suponiendo que está usando un campo de incremento automático para el pk.Mejores prácticas: .NET: ¿cómo devolver PK en una base de datos Oracle?
Sin embargo, parece que no puedo encontrar el equivalente para Oracle.
La mejor práctica parece ser usar una secuencia para generar el PK, pero existen diferentes opciones para implementarlo. ¿Dejas que el desarrollador inserte sequence.nexval o uses un disparador?
En cualquier caso, recuperar la nueva ID parece ser un problema común.
Sugerencias y soluciones que he correr a través incluyen:
- crear un procedimiento almacenado que devuelve el PK
- la ejecución de un selecto Identificación de seq.nextval, pasando entonces a que el inserto
- seleccione max (id) después de la inserción (Nota: no haga esto)
- añadir una cláusula de regresar a la inserción
lo que debería t la solución de "mejores prácticas" para esta situación?
Para cualquiera que lea esto ahora, el enlace está muerto =/ – Travis
Gracias por notar eso, he cambiado el enlace a algo más estable (si es un poco menos amigable - los documentos de Oracle en la cláusula RETURNING) – ScottCher