2009-04-02 13 views

Respuesta

7

En gran parte sí, siempre y cuando no lo restablezca o inserte filas con copia masiva, o use IDENTITY_INSERT. Y, por supuesto, suponiendo que no se desborde el tipo de datos (que podría ser impresionante).

2

Sí. Cualquier hueco causado por eliminaciones no se reutilizará

2

Como se ha comentado por Marc, sí se puede con salvedades

lo que debe hacer sin embargo para fijar definitivamente el problema es añadir una columna

 
dteInserted datetime not null default getdate() 

A continuación, sólo tiene que seleccionar ordenadas por esta.

Yo mismo agrego automáticamente esa columna a cualquier tabla de "datos" en cualquier base de datos que estoy diseñando. El almacenamiento es barato hoy en día y la marca de tiempo de la fecha de inserción en una fila es siempre útil en algún momento.

+1

El problema aquí es que si inserta filas lo suficientemente rápido (lo que hacemos en una importación), obtiene fechas de tiempo duplicadas ya que la granularidad de una fecha y hora no es lo suficientemente pequeña en SQL Server. – Jon

+1

Hmm, buen punto, preferiría centrarme en la idea de que estarías insertando a través de las operaciones normales de la base de datos transaccional. De acuerdo, entonces la respuesta en ese caso es que la identidad está en orden, pero aún debe incluir la marca de tiempo porque eso le permitirá detectar cualquier problema .... – Cruachan

+1

... que surja como inserciones de identidad o reinicios o lo que sea que invalidar la suposición. – Cruachan

Cuestiones relacionadas