Probablemente desee utilizar SCOPE_IDENTITY no @@ IDENTITY para restringirlo al valor de identidad en el ámbito actual. Esto evita que los triggers inserten nuevos valores de identidad en otras tablas y no en la tabla en la que acaba de insertar.
Pero se puede calcular lo que el siguiente valor de identidad es
SELECT IDENT_CURRENT('mytable') + IDENT_INCR('mytable') FROM mytable
El problema es que no se garantiza que es el valor. Debería tener un candado de tal manera que otras inserciones sean denegadas en la mesa cuando se ejecuta para garantizar que el valor sea preciso. Además, después de que te quedas sin enteros de 32 bits, no sé cuál es la lógica. No sé si se da vuelta o falla.
Edit: Acabo de probar esto (ver a continuación para SQL) y no devuelve el valor correcto cuando no hay datos. Y resiembra con DBCC CHECKIDENT ('nombre de tabla', RESEED, 200), en realidad resultó en el siguiente valor es 201 no 200.
CREATE TABLE willtest (myid integer IDENTITY(1,1), myvalue varchar(255))
SELECT IDENT_CURRENT('willtest') + IDENT_INCR('willtest')
INSERT INTO willtest (myvalue)
VALUES ('1')
INSERT INTO willtest (myvalue)
VALUES ('2')
INSERT INTO willtest (myvalue)
VALUES ('3')
INSERT INTO willtest (myvalue)
VALUES ('4')
INSERT INTO willtest (myvalue)
VALUES ('5')
INSERT INTO willtest (myvalue)
VALUES ('6')
INSERT INTO willtest (myvalue)
VALUES ('7')
INSERT INTO willtest (myvalue)
VALUES ('8')
SELECT IDENT_CURRENT('willtest') + IDENT_INCR('willtest')
DBCC CHECKIDENT ('willtest', RESEED, 200)
SELECT IDENT_CURRENT('willtest') + IDENT_INCR('willtest')
INSERT INTO willtest (myvalue)
VALUES ('200')
INSERT INTO willtest (myvalue)
VALUES ('201')
INSERT INTO willtest (myvalue)
VALUES ('202')
INSERT INTO willtest (myvalue)
VALUES ('203')
INSERT INTO willtest (myvalue)
VALUES ('204')
INSERT INTO willtest (myvalue)
VALUES ('205')
INSERT INTO willtest (myvalue)
VALUES ('206')
INSERT INTO willtest (myvalue)
VALUES ('207')
SELECT IDENT_CURRENT('willtest') + IDENT_INCR('willtest')
SELECT * FROM willtest
DROP TABLE willtest
No es que yo sepa, pero ¿por qué quieres saber? ¿Cuál es el problema general? – colithium
Si desea un lavado rápido de la tabla, 'truncar tabla' vuelve a guardar automáticamente todas las columnas de identidad – SWeko