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

Como usar a função IDENTITY() no SQL Server


No SQL Server, você pode usar o IDENTITY() função para inserir uma coluna de identidade em uma nova tabela.

No entanto, esta função não deve ser confundida com o IDENTITY() propriedade , que é usado com o CREATE TABLE e ALTER TABLE declarações.

A IDENTITY() função é usado apenas em um SELECT instrução com um INTO cláusula de tabela. Assim, você pode usá-lo ao transferir dados de uma tabela para outra, por exemplo.


Sintaxe


A sintaxe fica assim:
IDENTITY (data_type [ , seed , increment ] ) AS column_name

O data_type O argumento especifica o tipo de dados da coluna de identidade. Os tipos de dados válidos são quaisquer tipos de dados da categoria de tipo de dados inteiro, exceto bit e decimais .

A semente é o valor usado para a primeira linha carregada na tabela.

O incremento é o valor incremental que é adicionado ao valor de identidade da linha anterior que foi carregada.

O column_name O argumento fornece o nome da coluna de identidade que você deseja criar.

Exemplo 1 – Uso básico


Aqui está um exemplo de código básico.
SELECT 
  IDENTITY(int, 101, 10) AS pet_id,
  PetName AS pet_name
INTO BestFriends
FROM Pets;

Isso seleciona dados dos Animais de estimação table e a insere em uma nova tabela chamada BestFriends . A primeira coluna é uma coluna de identidade que eu crio com o IDENTITY() função. Neste caso, defino a semente para 101 e o incremento para 10. Chamo essa coluna de pet_id .

Eu chamo a segunda coluna pet_name , e eu preencho isso na coluna chamada PetName .

Veja o que os Animais de estimação tabela se parece com:
CREATE TABLE Pets (
    PetId int IDENTITY(1,1) PRIMARY KEY, 
    PetName varchar(255)
    );
INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');

SELECT * FROM Pet;

Resultado:
+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
+---------+-----------+

E aqui está o que os MelhoresAmigos A tabela se parece após a transferência dos dados:
SELECT * FROM BestFriends;

Resultado:
+----------+------------+
| pet_id   | pet_name   |
|----------+------------|
| 101      | Homer      |
| 111      | Felix      |
| 121      | Ruff       |
+----------+------------+

Portanto, os nomes dos animais de estimação permanecem os mesmos, mas a coluna de identidade contém valores diferentes (porque usei IDENTITY(int, 101, 10) , comparado a IDENTITY(1,1) para os animais de estimação tabela).