INSIRA uma coluna com conjunto de identidade

Página atualizada :
Data de criação de página :

O SQL Server possui uma propriedade "IDENTIDADE" que define automaticamente o número sequencial de 1 para uma coluna específica quando você adiciona um registro. Por exemplo, se você definir identidade na coluna A e adicionar 3 registros, a coluna A será preenchida automaticamente com valores de 1, 2 e 3 na ordem em que você os adicionou.

Mesmo se você usar uma instrução INSERT, o valor é definido automaticamente, portanto não há necessidade de definir explicitamente o valor, mas eu acho que há casos em que você quer definir o valor explicitamente porque ele é usado para uma chave estrangeira etc.

Como exemplo, suponha que haja uma tabela com a propriedade "IDENTIDADE" definida na coluna "ID", como mostrado na figura.

Uma instrução INSERT que insere um valor nesta tabela, incluindo a coluna ID, seria assim:

insert into [テーブル名] ([ID], [Value]) values (1, 1)

No entanto, quando tento executá-lo, acho que o seguinte erro aparecerá.

Msg 544, Nível 16, Estado 1, Linha 1 Quando IDENTITY_INSERT é definida como OFF, valores explícitos não podem ser inseridos na coluna de identidade da tabela 'XXXXX'.

As colunas originalmente definidas como IDENTIDADE são consideradas com valores definidos automaticamente, de modo que você não pode definir explicitamente os valores.

Se você realmente quiser defini-lo, você precisa definir "IDENTITY_INSERT" para "ON" como descrito na mensagem de erro. Ligue IDENTITY_INSERT antes de inserir e volte para desligar quando a inserção estiver completa, como no seguinte SQL:

set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;

-- 確認
select * from [テーブル名];

Agora você pode definir explicitamente o valor e INSERI-lo. INSERT-SELECT usando tabelas também é válido.

As colunas com identidade são automaticamente atribuídas valores a partir de 1, mas se você definir explicitamente os valores conforme descrito acima, você pode estar se perguntando qual número será atribuído a seguir. Neste caso, o próximo valor atribuído é atribuído a partir do número após o maior valor adicionado à tabela, de modo que não há valor duplicado quando um novo registro é inserido. (No entanto, há exceções devido a deficiências, etc.)