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

Renvoyer la graine d'origine d'une colonne d'identité dans SQL Server

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

Syntaxe

La syntaxe ressemble à ceci :

IDENT_SEED ( 'table_or_view' )

La table_or_view argument est une expression qui spécifie la table ou la vue pour vérifier une valeur de départ d'identité.

Exemple 1 - Utilisation de base

Voici un exemple de code de base.

SELECT IDENT_SEED('Pets') AS Result;

Résultat :

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

Dans ce cas, la valeur de départ de l'identité est 1.

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

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

Résultat :

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 1      | 101           | 150      |
+--------+---------------+----------+

Chacune de ces tables a été créée avec une valeur d'identité de départ différente.

Exemple 2 - Inclure le schéma

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

SELECT IDENT_SEED('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_SEED(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_SEED  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_SEED(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

Résultat :

+----------------+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_SEED   |
|----------------+----------------+--------------|
| dbo            | ConstraintTest | 1            |
| dbo            | Event          | 1            |
| dbo            | Scoreboard     | 1            |
| dbo            | Pets           | 1            |
| dbo            | BestFriends    | 101          |
| dbo            | Cities         | 150          |
| dbo            | Colors         | 1            |
+----------------+----------------+--------------+

À propos de la valeur de retour

La valeur de retour pour IDENT_SEED() 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.