Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: diego_lp en 7 Septiembre 2009, 04:16 am



Título: [SOLUCIONADO]Agregar registro a sql server
Publicado por: diego_lp en 7 Septiembre 2009, 04:16 am
Hola amigos, mi problema es el siguiente:
Tengo una tabla con varias columnas, la primera se llama "id" y es autonumerica (muy original  ;-)), lo que necesito es que al agregar un nuevo registro a la tabla me devuelva el numero id que se le asigna al registro.
Espero puedan ayudarme
Muchas gracias.
Saludos


Título: Re: Agregar registro a sql server
Publicado por: Hadess_inf en 7 Septiembre 2009, 04:18 am
Crea un procedimiento almacenado que inserte el registro y que retorne el ultimo id registrado (en este caso del dato insetado), tendrias que trabajar con output('s), luego tendrias que crear una funcion que facilite aun mas el uso del procedimiento almacenado y finalmente solo usar el metodo.

Saludos.


Título: Re: Agregar registro a sql server
Publicado por: Kasi en 7 Septiembre 2009, 16:12 pm
Prueba con :
Código:
SELECT TOP(1) id FROM NOMBRE_TABLA ORDER BY ID ASC
Esto te deberia ordenar la tabla según la ID, y cojerte el ID mas alto que estará en la primera fila, si no , solo cambia ASC por DESC y listo.

Saludos


Título: Re: Agregar registro a sql server
Publicado por: Atrum en 7 Septiembre 2009, 20:43 pm
Por que no creas un trigger para cuando insertes, y que te devuelva la id de la tabla inserted.


Título: Re: Agregar registro a sql server
Publicado por: raul338 en 7 Septiembre 2009, 21:26 pm
Por que no creas un trigger para cuando insertes, y que te devuelva la id de la tabla inserted.

se puede hacer eso ????  :o :o
Prueba con :
Código:
SELECT TOP(1) id FROM NOMBRE_TABLA ORDER BY ID ASC
Esto te deberia ordenar la tabla según la ID, y cojerte el ID mas alto que estará en la primera fila, si no , solo cambia ASC por DESC y listo.

Saludos
no estoy seguro que funcione, ahora, si dices que es autonumerico (y nunca reseteas el contador) te conviene (o es mas facil) esto:

Código:
SELECT MAX(id) FROM NOMBRE_TABLA


Título: Re: Agregar registro a sql server
Publicado por: Atrum en 7 Septiembre 2009, 23:58 pm
Bueno en realidad hay varias formas de hacerlo y como ya mencionaron una de ellas es utilizar "Output"
pero yo creo que la mas facil es agregar el TableAdapter y despues en el equema de datos le das click derecho a tu TableAdapter y le pones "agregar consulta" o "add query", posteriormente se debe de abrir un asistente, seleccionas "Usar instrucciones SQL", y le das siguente, cuando te pida el tipo de consulta le das INSERT y cuando le des siguiente te va a generar algo asi:

Código
  1. INSERT INTO [Personas] ([Nombre], [Descripcion]) VALUES (@Nombre, @Descripcion);
  2. SELECT ID,Nombre,Descripcion FROM Grupos WHERE (ID = SCOPE_IDENTITY())
  3.  

este metodo te insertara el nuevo dato en la tabla y te retornara la fila que se inserto, asi que solo bastaria modificarla para que solo nos deje el dato que queremos.

Código
  1. INSERT INTO [Personas] ([Nombre], [Descripcion]) VALUES (@Nombre, @Descripcion);
  2. SELECT ID FROM Grupos WHERE (ID = SCOPE_IDENTITY())
  3.  

y entonces eso te retornaria el id del dato insertado

NOTA: Esto es utilizando VS 2008, no se que tan diferente sea en otras versiones


Título: Re: Agregar registro a sql server
Publicado por: diego_lp en 12 Septiembre 2009, 21:04 pm
Terminé utilizando "SELECT MAX(id) FROM NOMBRE_TABLA" como digo raul338 ya que aunque tal vez no sea la mas prolija es la mas sencilla y me funcionó perfectamente, pero estoy seguro que todas las soluciones me hubieran servido, muchas gracias a todos por tomarse la molestia de contestar.  ;-)
Problema resuelto  ;D