Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 12386|Respuesta: 0

[Fuente] SqlServer implementa el ID del registro recién insertado

[Copiar enlace]
Publicado en 15/6/2016 11:45:40 | | |

Fuente: Internet Autor: Desconocido

- Crear bases de datos y tablas

crear base de datos MyDataBase

usar MyDataBase

crear tabla mytable

id int identidad(1,1),

nombre Varchar(20)



--Ejecuta este SQL para averiguar el valor de la columna autoincremental correspondiente al registro que acaba de insertarse

insertar en los valores de mi tabla ('Li Si')

Selecciona @@identity

2. Comparación de los tres métodos

En SQL Server 2000, hay tres características similares: SCOPE_IDENTITY, IDENT_CURRENT y @@IDENTITY, todas las cuales devuelven valores insertados en la columna IDENTIDAD.

IDENT_CURRENT Devuelve el último valor de identificación generado para una tabla específica en cualquier sesión y en cualquier ámbito. IDENT_CURRENT No está limitado por el alcance y la sesión, sino por una tabla especificada. IDENT_CURRENT Devuelve el valor generado para una tabla específica en cualquier sesión y alcance.

@@IDENTITY Devuelve el último valor de identificación generado para cualquier tabla en todos los ámbitos de la sesión actual.

SCOPE_IDENTITY Devuelve el último valor identificado que se generó para la sesión actual y cualquier tabla en el ámbito actual

SCOPE_IDENTITY y @@IDENTITY devolven el último valor de identificación que se generó dentro de cualquier tabla de la sesión actual. Sin embargo, SCOPE_IDENTITY solo devuelve los valores insertados en el ámbito actual; @@IDENTITY No se limita a un alcance específico.

Por ejemplo, hay dos tablas, T1 y T2, en las que se define un disparador INSERT. Cuando se inserta una fila en T1, se activa el disparador y se inserta una fila en T2. Este ejemplo ilustra dos osciloscopios: uno en T1 y otro en T2 como resultado del disparador.

Suponiendo que tanto T1 como T2 tienen columnas IDENTITY, @@IDENTITY y SCOPE_IDENTITY devolverán valores diferentes al final de la sentencia INSERT en T1.

@@IDENTITY Devuelve el último valor de columna IDENTITY insertado en cualquier ámbito de la sesión actual, que es el valor insertado en T2.

SCOPE_IDENTITY() devuelve el valor IDENTITY insertado en T1, que es el último INSERT que ocurrió en el mismo ámbito. Si la función SCOPE_IDENTITY() se llama antes de que ocurra la sentencia de inserción a la columna identidad en el ámbito, la función devuelve un valor NULO.

Los valores devueltos por IDENT_CURRENT('T1') y IDENT_CURRENT('T2') son los últimos valores auto-incrementales de las dos tablas, respectivamente.

Experimento de AJQC: (40 hilos locales, 40+40 hilos remotos simultáneamente probando simultáneamente, insertando filas de 1200W), la conclusión es:

1. En aplicaciones típicas en cascada. @@IDENTITY no se puede usar, y se producirán conflictos concurrentes cuando 1W esté en múltiples filas en máquinas CII850 y 256M SD. En P42.8C y 512M DDR, hay un conflicto simultáneo cuando solo hay más de 6000 líneas.

2.SCOPE_IDENTITY() es absolutamente fiable y puede usarse en el proceso de almacenamiento, incluso los disparadores no necesitan ser construidos, y no hay conflictos concurrentes

SELECT IDENT_CURRENT('NombreTabla') - Devuelve el último valor de etiqueta generado en la tabla especificada

SELECT IDENT_INCR('NombreTabla') - devuelve el valor de incremento marcado del campo para la tabla especificada

SELECT IDENT_SEED('NombreTabla') - devuelve el valor de semilla marcado del campo de la tabla especificada

Devuelve el número automático del último registro insertado

SELECT IDENT_CURRENT('NombreDeTabla')

Volver al siguiente número automático:

SELECT IDENT_CURRENT('NombreDeTabla')+(SELECT IDENT_INCR('NombreDeTabla'))

SELECT @@IDENTITY - Devuelve el último valor marcado que se generó en todas las tablas de la sesión actual








Anterior:SQLServer implementa el método universal de dividir cadenas
Próximo:Comparte un artefacto útil de búsqueda
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com