Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 12386|Resposta: 0

[Fonte] SqlServer implementa o ID do registro recém-inserido

[Copiar link]
Publicado em 15/06/2016 11:45:40 | | |

Fonte: Internet Autor: Desconhecido

- Criar bancos de dados e tabelas

criar banco de dados MyDataBase

use MyDataBase

criar tabela mytable

id int identidade(1,1),

nome Varchar(20)



--Execute este SQL para descobrir o valor da coluna auto-incremental correspondente ao registro que acabou de ser inserido

inserir nos valores da minha tabela ('Li Si')

selecione @@identity

2. Comparação dos três métodos

No SQL Server 2000, existem três recursos semelhantes: SCOPE_IDENTITY, IDENT_CURRENT e @@IDENTITY, todos retornando valores inseridos na coluna IDENTITY.

IDENT_CURRENT Retorna o último valor de identificação gerado para uma tabela específica em qualquer sessão e escopo. IDENT_CURRENT Não limitado pelo escopo e pela sessão, mas por uma tabela especificada. IDENT_CURRENT retorna o valor gerado para uma tabela específica em qualquer sessão e escopo.

@@IDENTITY Retorna o último valor de identificação gerado para qualquer tabela em todos os escopos da sessão atual.

SCOPE_IDENTITY retorna o último valor identificado que foi gerado para a sessão atual e qualquer tabela no escopo atual

SCOPE_IDENTITY e @@IDENTITY retornam o último valor de identificação gerado em qualquer tabela da sessão atual. No entanto, SCOPE_IDENTITY retorna apenas valores inseridos no escopo atual; @@IDENTITY Não se limita a um escopo específico.

Por exemplo, existem duas tabelas, T1 e T2, nas quais um gatilho INSERT é definido. Quando uma linha é inserida em T1, o gatilho é acionado e uma linha é inserida em T2. Este exemplo ilustra dois endoscópios: um em T1 e outro em T2 como resultado do gatilho.

Assumindo que tanto T1 quanto T2 tenham colunas IDENTITY, @@IDENTITY e SCOPE_IDENTITY retornarão valores diferentes ao final da instrução INSERT em T1.

@@IDENTITY Retorna o último valor da coluna IDENTITY inserido em qualquer escopo na sessão atual, que é o valor inserido em T2.

SCOPE_IDENTITY() retorna o valor IDENTITY inserido em T1, que é o último INSERT que ocorreu no mesmo escopo. Se a função SCOPE_IDENTITY() for chamada antes que a instrução de inserção para a coluna identidade ocorra no escopo, a função retorna um valor NULL.

Os valores retornados por IDENT_CURRENT('T1') e IDENT_CURRENT('T2') são, respectivamente, os últimos valores auto-incrementais das duas tabelas.

Experimento do AJQC: (40 threads locais, 40+40 threads remotas simultâneamente testando simultaneamente, inserindo linhas de 1200W), a conclusão é:

1. Em aplicações típicas em cascata. @@IDENTITY não podem ser usados, e conflitos simultâneos ocorrerão quando 1W for multi-row em máquinas CII850 e 256M SD. Em P42.8C e 512M DDR, há um conflito simultâneo quando há apenas mais de 6000 linhas.

2.SCOPE_IDENTITY() é absolutamente confiável e pode ser usado no processo de armazenamento, mesmo gatilhos não precisam ser construídos, e não há conflitos simultâneos

SELECT IDENT_CURRENT('TableName') - Retorna o último valor do rótulo gerado na tabela especificada

SELECT IDENT_INCR('TableName') - retorna o valor de incremento marcado do campo para a tabela especificada

SELECT IDENT_SEED('TableName') - retorna o valor da semente marcada do campo da tabela especificada

Retorna o número automático do último registro inserido

SELECT IDENT_CURRENT('NomeTabel')

Voltar ao próximo número automático:

SELECT IDENT_CURRENT('NomeTabel')+(SELECT IDENT_INCR('NomeMesa'))

SELECT @@IDENTITY - Retorna o último valor marcado que foi gerado em todas as tabelas da sessão atual








Anterior:SQLServer implementa o método universal de dividir strings
Próximo:Compartilhe um artefato útil de busca
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com