Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornar o valor de incremento de uma coluna de identidade no SQL Server


No SQL Server, você pode usar o T-SQL IDENT_INCR() função para retornar o valor de incremento de uma coluna de identidade. Este é o valor de incremento especificado ao criar a coluna de identidade.


Sintaxe


A sintaxe fica assim:
IDENT_INCR ( 'table_or_view' )

A table_or_view argumento é uma expressão que especifica a tabela ou exibição para verificar um valor de incremento de identidade válido.

Exemplo 1 – Uso básico


Aqui está um exemplo de código básico.
SELECT IDENT_INCR('Pets') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 1        |
+----------+

Nesse caso, o valor do incremento de identidade é 1.

Aqui está outra consulta que verifica mais tabelas.
SELECT 
  IDENT_INCR('Pets') AS Pets,
  IDENT_INCR('BestFriends') AS BestFriends,
  IDENT_INCR('Cities') AS Cities;

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

Exemplo 2 – Incluindo o Esquema


Você também pode incluir o esquema no argumento.
SELECT IDENT_INCR('dbo.Pets') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 1        |
+----------+

Exemplo 3 – Verifique todas as tabelas no banco de dados


Aqui está um exemplo de verificação de todas as tabelas no banco de dados para seu valor de semente de identidade.
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;

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

Sobre o valor de retorno


O valor de retorno para IDENT_INCR() é numeric(@@MAXPRECISION,0)) . Isso significa que é um tipo de dados numérico com precisão e escala fixas.

A precisão depende do servidor. O @@MAXPRECISION O argumento retorna o nível usado pelos tipos de dados decimal e numérico conforme definido atualmente no servidor. A precisão especifica o número total máximo de dígitos decimais (inclui os lados esquerdo e direito do ponto decimal).

O segundo argumento especifica uma escala de 0 , o que significa que não há dígitos decimais à direita da casa decimal.

Você pode executar a seguinte consulta para encontrar o nível de precisão atualmente definido em seu servidor:
SELECT @@MAX_PRECISION AS [Max Precision];

Aqui está o resultado no meu sistema:
+-----------------+
| Max Precision   |
|-----------------|
| 38              |
+-----------------+

Criando uma coluna de identidade


Você pode criar uma coluna de identidade usando o IDENTITY() propriedade em seu CREATE TABLE ou ALTER TABLE demonstração.

Outra maneira de criar uma coluna de identidade é o IDENTITY() função. Isso permite que você crie uma coluna de identidade ao usar um SELECT INTO instrução para transferir dados de uma fonte para outra.