Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Restituisce il valore di incremento di una colonna Identity in SQL Server

In SQL Server è possibile utilizzare il IDENT_INCR() T-SQL funzione per restituire il valore di incremento di una colonna di identità. Questo è il valore di incremento specificato durante la creazione della colonna Identity.

Sintassi

La sintassi è questa:

IDENT_INCR ( 'table_or_view' )

La tabella_o_vista argomento è un'espressione che specifica la tabella o la vista per verificare la presenza di un valore di incremento dell'identità valido.

Esempio 1 – Utilizzo di base

Ecco un esempio di codice di base.

SELECT IDENT_INCR('Pets') AS Result;

Risultato:

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

In questo caso, il valore di incremento dell'identità è 1.

Ecco un'altra query che controlla più tabelle.

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

Risultato:

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

Esempio 2 – Incluso lo schema

Puoi anche includere lo schema nell'argomento.

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

Risultato:

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

Esempio 3:verifica di tutte le tabelle nel database

Ecco un esempio di controllo di tutte le tabelle nel database per il loro valore seed di 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;

Risultato:

+----------------+----------------+--------------+
| 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            |
+----------------+----------------+--------------+

Informazioni sul valore di ritorno

Il valore restituito per IDENT_INCR() è numeric(@@MAXPRECISION,0)) . Ciò significa che si tratta di un tipo di dati numerico con una precisione e una scala fisse.

La precisione dipende dal server. Il @@MAXPRECISION argomento restituisce il livello utilizzato dai tipi di dati decimali e numerici come attualmente impostato nel server. La precisione specifica il numero totale massimo di cifre decimali (include quelle a sinistra ea destra del punto decimale).

Il secondo argomento specifica una scala di 0 , il che significa che non ci sono cifre decimali a destra della cifra decimale.

Puoi eseguire la seguente query per trovare il livello di precisione attualmente impostato sul tuo server:

SELECT @@MAX_PRECISION AS [Max Precision];

Ecco il risultato sul mio sistema:

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

Creazione di una colonna identità

Puoi creare una colonna di identità utilizzando IDENTITY() proprietà nel tuo CREATE TABLE o ALTER TABLE dichiarazione.

Un altro modo per creare una colonna di identità è IDENTITY() funzione. Ciò ti consente di creare una colonna identità quando utilizzi un SELECT INTO dichiarazione per trasferire i dati da una fonte all'altra.