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?