SQL Server: sélection du numéro de key primaire pour une ligne nouvellement ajoutée

J'utilise actuellement

SELECT MAX(CustomerID)... 

pour sélectionner le CustomerID , qui est la key primaire de la table, le numéro d'une ligne nouvellement ajoutée car j'ai besoin d'utiliser ce numéro pour une autre table qui l'utilise comme une key étrangère. Une ligne est ajoutée via INSERT et une requête SELECT est exécutée de manière séquentielle.

Sous la propriété de colonne dans SQL Server Management Studio, je vois que l' Identity Increment est défini sur 1 . Existe-t-il une raison dangereuse d'utiliser MAX(CustomerID) pour get ce dont j'ai besoin? Le code sera toujours "une ligne INSERT et une requêtes SELECT" pour cette procédure. S'il y a un meilleur moyen, qu'est-ce que ce serait? Peut-être, quelque part le long de la ligne, "obtenez-moi le CustomerID de la ligne nouvellement ajouté"?

Votre approche suggérée avec MAX(CustomerID) échouera dans des conditions de concurrency (et lorsque la table est vide)

utilisez SELECT SCOPE_IDENTITY() ou la clause OUTPUT . Exemples des deux ci-dessous

 CREATE TABLE #Customers ( CustomerID INT IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(50) ) INSERT INTO #Customers (Name) VALUES ('Customer 1') SELECT SCOPE_IDENTITY() INSERT INTO #Customers (Name) OUTPUT inserted.CustomerID VALUES ('Customer 1') DROP TABLE #Customers