Próximo ID campo numérico PK - não é autoincrement

7 views
Skip to first unread message

Carmem Almeida

unread,
Feb 25, 2019, 8:20:28 AM2/25/19
to SQL Server Brasil
Bom dia a todos

Tenho uma rotina a qual preciso mostrar o próximo ID em uma tela de cadastro e após o(s) usuário(s) clicar em Salvar o mesmo deve ser inserido na tabela.
Acontece que, se o acesso for simultâneo entre dois usuários ambos  terão o mesmo ID.
Qual a melhor maneira de  mostrar o próximo ID, temo como bloquear?

Obrigada

Midana Sana

unread,
Mar 8, 2019, 6:11:23 AM3/8/19
to SQL Server Brasil
Olá Carmem,

vou te dar uma opção que pensei aqui. se Não resolver, me fale e vamos ver outras soluções.
  1. Criar uma tabela pra responsabilizar por ID. nesta Tabela ID vai ser identity, então toda vez que alguem abrir a tela de cadastro, você vai salvar nesta tabela e receber ID que será exibido na sua tela. neste caso você vai resolver porém lembrando que quando a pessoa cancelar o cadastro, vc vai estar perdendo aquele ID. Nesta mesma situação existem formas de verificação pra não disperdiçar ID... não sei se vc se preocupa a este ponto.

Jefferson

unread,
Mar 8, 2019, 11:53:15 AM3/8/19
to sql-serv...@googlegroups.com

Boa tarde,

 

 

Você pode fazer o insert da chave primária (com o ID, lógico) na tabela (e commit, claro, assim já tem o ID) e alterar (fazer update) dos demais dados conforme for preenchendo.

Os demais dados você preenche como UPDATE...

 

Se cancelar, apaga o que inseriu.

 

No banco você poderia mudar o tipo isolamento de transação para READ_UNCOMMITED, mas vai implicar em outras coisas... acho mais complicado.

 

 

Exemplo:

 

Tabela Dados:

ID

Nome

Sobre nome

 

 

INSERT INTO Dados (ID) VALUES (‘1002-523-253’)

 

Abre a tela para preencher o restante dos dados (você já tem o ID e caso for inserir dados de outro usuário, vai seguir a sequencia dos ID...

 

Depois de preencher os demais dados, é só fazer um update.

 

 

Atenciosamente,

 

Jefferson

--
--
----------------------
Você recebeu essa mensagem porque você esta inscrito no grupo "SQL Server Brasil" do Google Groups.
Para postar nesse grupo, envie mensagem para sql-serv...@googlegroups.com
Para sair desse grupo, envie mensagem para sql-server-bra...@googlegroups.com
Para mais opções, visite a página desse grupo em http://groups.google.com/group/sql-server-brasil
----------------------
You received this message because you are subscribed to the Google Groups "SQL Server Brasil" group.
To post to this group, send email to sql-serv...@googlegroups.com
To unsubscribe from this group, send email to sql-server-bra...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sql-server-brasil
---
Você recebeu essa mensagem porque está inscrito no grupo "SQL Server Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para sql-server-bra...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Midana Sana

unread,
Mar 10, 2019, 10:44:09 AM3/10/19
to sql-serv...@googlegroups.com
Jefferson deu um boa opção também. Só tem que lembrar que todos os campos teriam que ser sentadas null neste caso. Assim você poderá inserir só pra pegar id.
Dependendo da crítica da sua tabela, pode dar certo. 
Reply all
Reply to author
Forward
0 new messages