Comment puis-je insert dans une key unique dans une table?

Je veux insert des données dans une table où je ne connais pas la prochaine key unique dont j'ai besoin. Je ne suis pas sûr comment formater ma requête INSERT sorte que la valeur du champ Key soit 1 supérieure à la valeur maximale de la key dans la table. Je sais que c'est un hack, mais je suis juste en train d'effectuer un test rapide sur une database et je dois m'assurer que j'envoie toujours une key unique.

Voici le SQL que j'ai jusqu'à présent:

 INSERT INTO [CMS2000].[dbo].[aDataTypesTest] ([KeyFld] ,[Int1]) VALUES ((SELECT Max([KeyFld]) FROM [dbo].[aDataTypesTest]) + 1 ,1) 

quelles erreurs avec:

Msg 1046, niveau 15, état 1, ligne 5 Les sous-requêtes ne sont pas autorisées dans ce context. Seules les expressions scalaires sont autorisées.

Je ne suis pas en mesure de modifier la table de database sous-jacente. Que dois-je faire pour assurer une insertion unique dans mon code SQL INSERT ?

Vous pouvez utiliser l'autre syntaxe INSERT:

 INSERT INTO [CMS2000].[dbo].[aDataTypesTest] ([KeyFld] ,[Int1]) SELECT Max([KeyFld]) + 1, 1 FROM [dbo].[aDataTypesTest] 

Désolé, vous ne pouvez pas modifier la database. Tu as raison; c'est un hack.

 INSERT INTO [CMS2000].[dbo].[aDataTypesTest] ([KeyFld] ,[Int1]) SELECT Max([KeyFld]) + 1, 1 FROM [dbo].[aDataTypesTest] 

Mais pourquoi ne pas utiliser une propriété IDENTITY sur KeyFld puis SCOPE_IDENTITY () ou une clause OUTPUT? (OK, aucun changement de schéma.) Bummer)