2009-06-16 9 views

Répondre

14

Si la colonne source à laquelle appartient l'identité est un entier, il n'y a pas besoin de le jeter. Ce qui suit fonctionne très bien en supposant que la colonne d'identité est un entier pour commencer ou qu'elle rentre dans un "Int".

DECLARE @NewIdent Int 
SET @NewIdent = SCOPE_IDENTITY() 
+3

Donc le casting est pris en compte lors de l'assignation à NewIdent, mais c'est toujours un casting. – lowerkey

+0

Ca ne marche pas pour moi, SQL2016, ça revient juste en décimal (18,0) pour moi, j'ai dû le convertir en int –

12
SELECT CAST(bigintcolumn AS int) 

(à condition que vous savez qu'il va s'intégrer dans un entier de 32 bits)

+0

C'est ce que je pensais, je ne sais pas pourquoi cela ne fonctionne pas bien. T'a renvoyé 0. –

2

Juste lancer ce comme:

select CAST(SCOPE_IDENTITY() as int) 

Et vos données couche:

reader.GetInt32(0);