Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Insertar registro en la última fila

Estas en el tema de Insertar registro en la última fila en el foro de SQL Server en Foros del Web. Que tal! Realicé este ejemplo de Insert en un estructura "If" y el registro número 5 para una tabla con 4 registros, me lo puso ...
  #1 (permalink)  
Antiguo 13/08/2012, 09:06
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Insertar registro en la última fila

Que tal!

Realicé este ejemplo de Insert en un estructura "If" y el registro número 5 para una tabla con 4 registros, me lo puso arriba de todo en vez de ubicarmelo abajo. Acá dejo el script:

Código:
DECLARE @coPais int,
	@descripcion varchar(255)
set @coPais = 5
set @descripcion = 'España'

IF EXISTS(SELECT * FROM PAISES 
          WHERE CO_PAIS = @coPais) 
  BEGIN
	UPDATE PAISES
	SET DESCRIPCION = @descripcion
	WHERE CO_PAIS = @coPais
  END

ELSE
  BEGIN
	INSERT INTO PAISES
	(CO_PAIS, DESCRIPCION) VALUES
	(@coPais, @descripcion)
  END
En definitiva, después de la ejecución me quedó ubicado así: CO_PAIS 5, CO_PAIS 1, CO_PAIS 2, CO_PAIS 3, CO_PAIS 4...el último registro ingresado en la primera fila en vez de en la última.

Quisiera saber como hacer para que lo inserte en la última.

Saludos!!
  #2 (permalink)  
Antiguo 13/08/2012, 09:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Insertar registro en la última fila

Lo inserta en la ultimo renglon vacio, aqui el problema es como lo estas mostrando que es donde vez que esta primero prueba con un order by o algo asi, ademas otra cosa a tomar en consideracion como son caracteres puede ser que el ordenamiento no salga como lo deseas :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/08/2012, 09:20
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Insertar registro en la última fila

Cita:
Iniciado por Libras Ver Mensaje
Lo inserta en la ultimo renglon vacio, aqui el problema es como lo estas mostrando que es donde vez que esta primero prueba con un order by o algo asi, ademas otra cosa a tomar en consideracion como son caracteres puede ser que el ordenamiento no salga como lo deseas :)

saludos!
Ah! ¿entonces los registros están subidos en forma ascendente per se, y se solucionaría con un simple order by?

saludos!
  #4 (permalink)  
Antiguo 13/08/2012, 09:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Insertar registro en la última fila

Right my friend :) you've discovered the Black thread :) (LOL just kidding)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 13/08/2012, 09:37
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Insertar registro en la última fila

Cita:
Iniciado por Libras Ver Mensaje
Right my friend :) you've discovered the Black thread :) (LOL just kidding)


  #6 (permalink)  
Antiguo 14/08/2012, 19:04
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Insertar registro en la última fila

Cita:
Iniciado por t0n1 Ver Mensaje
Ah! ¿entonces los registros están subidos en forma ascendente per se, y se solucionaría con un simple order by?
La operación INSERT no sigue un orden ascendente para insertar registros, lo que puede pasar son dos cosas:

1. Si la tabla tiene un índice clustered, el registro se inserta en la página correspondiente al valor de la columna indexada, y si la página no tiene espacio suficiente, el motor hace un split dejando la mitad de los registros en la página actual y la otra mitad en la página nueva.

2. Si la tabla no tiene un índice clustered, el motor ejecuta un proceso llamado Page Free Space para determinar la primera página con espacio libre para insertar el nuevo registro.

En ambos casos, es posible que se inserten registros al principio, al medio o al final de la tabla, pero en ningún caso se relaciona con un orden ascendente.

Y por otro lado, ningún SELECT garantiza devolver los registros según el orden físico, aún si la tabla tiene un índice clustered, y esto es porque el orden físico solo se utiliza para optimizar la consulta, no porque tenga un significado para el modelo de datos, por lo tanto, debes utilizar un ORDER BY siempre que quieras visualizar los registros ordenados.

Saludos

Etiquetas: fila, insert, registro, select, tabla, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:13.