Partager via


NEWSEQUENTIALID() (Transact-SQL)

Crée une valeur GUID supérieure à celle d'un GUID précédemment généré par cette fonction sur un ordinateur donné depuis le démarrage de Windows. Après le redémarrage de Windows, le GUID peut redémarrer à partir d'une plage inférieure, mais est toujours globalement unique. Lorsqu'une colonne GUID est utilisée comme identificateur de ligne, l'utilisation de NEWSEQUENTIALID peut être plus rapide que celle de la fonction NEWID. Cela est dû au fait que la fonction NEWID génère une activité aléatoire et utilise moins de pages de données mises en cache. L'utilisation de NEWSEQUENTIALID vous aide également à remplir complètement les pages de données et d'index.

Important

Si la confidentialité des données pose un problème, n'utilisez pas cette fonction. Il est possible de deviner la valeur du GUID généré suivant, et donc d'accéder aux données qui lui sont associées.

NEWSEQUENTIALID est un wrapper sur la fonction UuidCreateSequential de Windows.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

NEWSEQUENTIALID ( )

Type de retour

uniqueidentifier

Notes

NEWSEQUENTIALID() peut être utilisé seulement avec des contraintes DEFAULT sur des colonnes de table de type uniqueidentifier. Exemple :

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID()) 

Lorsque vous utilisez la fonction NEWSEQUENTIALID() dans des expressions DEFAULT, vous ne pouvez pas la combiner avec d'autres opérateurs scalaires. Par exemple, vous ne pouvez pas exécuter ce qui suit :

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID())) 

Dans l'exemple précédent, myfunction() est une fonction scalaire définie par l'utilisateur qui accepte et renvoie une valeur de type uniqueidentifier.

La fonction NEWSEQUENTIALID() ne peut pas être référencée dans les requêtes.

Vous pouvez utiliser NEWSEQUENTIALID() pour générer des GUID pour réduire les contentions de pages au niveau feuille des index.

Chaque GUID généré à l'aide de NEWSEQUENTIALID() est unique sur cet ordinateur. Les GUID générés à l'aide de la fonction NEWSEQUENTIALID() sont uniques sur plusieurs ordinateurs seulement si l'ordinateur source possède une carte réseau.

Voir aussi

Référence

NEWID (Transact-SQL)

Opérateurs de comparaison (Transact-SQL)