Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/09/2005, 20:34
un_tio
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Usar SELECT @@IDENTITY de manera anidada para que sirva de valor en otra sentencia

Veréis, lo que quiero es poner varias sentencias todas dentro de una transacción. La primera sentencia de todas, quiero saber qué valor de id tiene, ya que lo usaré en todas las demás (que son inserts a otras tablas). Como quiero usar una transacción, quiero que la forma de obtener la id del último elemento introducido quede todo dentro de una sentencia SQL.

A mí se me había ocurrido algo así, pero me da error. Decidme cómo creéis que se haría:

DECLARE @Error int
BEGIN TRANSACTION INSERT INTO tabla_1 (id_ex, tip, campo3) VALUES (1, 'adf', 5)
SET @Error=@@ERROR select @@IDENTITY as a
IF (@Error<>0) GOTO TratarError
INSERT INTO el_de_tabl (fk_tabla_1, tip, id_el) VALUES (a, 'prueba', 1) SET @Error=@@ERROR IF (@Error<>0) GOTO TratarError COMMIT TRANSACTION TratarError: If @@Error<>0 ROLLBACK TRANSACTION

He puesto en negrita la parte problemática que no sé cómo hacer. No puedo meter el valor del @@ identity en a, pero de algún modo quiero poner dicho valor en las sentencias INSERT posteriores que hago. ¿Cómo se haría?