Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renvoyer la valeur d'incrément d'une colonne d'identité dans SQL Server

Dans SQL Server, vous pouvez utiliser le T-SQL IDENT_INCR() fonction pour renvoyer la valeur d'incrément d'une colonne d'identité. Il s'agit de la valeur d'incrément spécifiée lors de la création de la colonne d'identité.

Syntaxe

La syntaxe ressemble à ceci :

IDENT_INCR ( 'table_or_view' )

La table_or_view l'argument est une expression qui spécifie la table ou la vue pour vérifier une valeur d'incrément d'identité valide.

Exemple 1 - Utilisation de base

Voici un exemple de code de base.

SELECT IDENT_INCR('Pets') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 1        |
+----------+

Dans ce cas, la valeur d'incrément d'identité est 1.

Voici une autre requête qui vérifie plus de tables.

SELECT 
  IDENT_INCR('Pets') AS Pets,
  IDENT_INCR('BestFriends') AS BestFriends,
  IDENT_INCR('Cities') AS Cities;

Résultat :

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 1      | 10            | 10       |
+--------+---------------+----------+

Exemple 2 - Inclure le schéma

Vous pouvez également inclure le schéma dans l'argument.

SELECT IDENT_INCR('dbo.Pets') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 1        |
+----------+

Exemple 3 - Vérifier toutes les tables de la base de données

Voici un exemple de vérification de toutes les tables de la base de données pour leur valeur de départ d'identité.

SELECT 
  TABLE_SCHEMA, 
  TABLE_NAME,   
  IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_INCR  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

Résultat :

+----------------+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_INCR   |
|----------------+----------------+--------------|
| dbo            | ConstraintTest | 1            |
| dbo            | Event          | 1            |
| dbo            | Scoreboard     | 1            |
| dbo            | Pets           | 1            |
| dbo            | BestFriends    | 10           |
| dbo            | Cities         | 10           |
| dbo            | Colors         | 1            |
+----------------+----------------+--------------+

À propos de la valeur de retour

La valeur de retour pour IDENT_INCR() est numeric(@@MAXPRECISION,0)) . Cela signifie qu'il s'agit d'un type de données numérique avec une précision et une échelle fixes.

La précision dépend du serveur. Le @@MAXPRECISION L'argument renvoie le niveau utilisé par les types de données décimaux et numériques tels qu'ils sont actuellement définis sur le serveur. La précision spécifie le nombre total maximum de chiffres décimaux (cela inclut ceux situés à gauche et à droite du point décimal).

Le deuxième argument spécifie une échelle de 0 , ce qui signifie qu'il n'y a pas de chiffres décimaux à droite de la décimale.

Vous pouvez exécuter la requête suivante pour trouver le niveau de précision actuellement défini sur votre serveur :

SELECT @@MAX_PRECISION AS [Max Precision];

Voici le résultat sur mon système :

+-----------------+
| Max Precision   |
|-----------------|
| 38              |
+-----------------+

Création d'une colonne d'identité

Vous pouvez créer une colonne d'identité en utilisant le IDENTITY() propriété dans votre CREATE TABLE ou ALTER TABLE déclaration.

Une autre façon de créer une colonne d'identité est le IDENTITY() une fonction. Cela vous permet de créer une colonne d'identité lors de l'utilisation d'un SELECT INTO déclaration pour transférer des données d'une source à une autre.