Empresas
Id (int pk)
RazonSocial (nvarchar 50)
Cuit (nvarchar 13)
Clientes
Id (int pk)
Nombre (nvarchar 50)
EmpresaCliente
EmpresaId (int fk Empresas.Id)
ClientesId (int fk Clientes.Id)
En realidad cada tabla tiene entre 10 y 50 campos y son varias las tablas que intervienen en la creación de este primer template, por eso mi duda no es como hacer esto sino como hacerlo utilizando un solo procedimiento almacenado. De momento lo tengo funcionando con varios SP pero dada la cantidad de tablas que intervienen el código esta sucio y de poderse hacer sería mucho mejor con uno solo. Mi Query tiene esta forma:
Código SQL:
Ver original
BEGIN TRANSACTION INSERT INTO [Empresas] ([RazonSocial], [Cuit]) SELECT [RazonSocial], [Cuit] FROM Empresas E INNER JOIN Usuarios U ON U.Id = E.UsuarioId WHERE U.Id = -1 INSERT INTO [Clientes] (C.Nombre) SELECT C.Nombre FROM Clientes C INNER JOIN EmpresaCliente EC ON EC.ClienteId = C.Id INNER JOIN Empresas E ON E.Id = EC.EmpresaId INNER JOIN Usuarios U ON U.Id = E.UsuarioId WHERE U.Id = -1 INSERT INTO EmpresaCliente (EmpresaId, ClienteId) VALUES (Aca irian las @@IDENTITY que obtengo del INSERT de clientes y empresas) Commit TRANSACTION
Lo que necesito es obtener el Id luego del insert de empresa y cliente ya que no puedo utilizar los que están cargados en el template, tienen que ser los Ids que me se me acaban de otorgar. Mi idea es obtenerlos con Scope_Identity() y luego arrojarlos en un parametro para luego usarlo en el Insert de la tabla relacional EmpresaCliente. ¿Es posible hacer esto?