Eu tenho um teste de tabela com colunas id qual chave primária e auto incrementado e nome. Quero inserir um novo registro, se somente não houver registros.Por exemplo
input é id = 30122 e name = john
se houver registros com o ID 30122, atualizei a coluna de nome para john; se não houver registros, insira um novo registro.
Eu posso fazer usando 2 consultas como
select * from test where id=30122
se tem alguns registros então eu posso usar update test set name='john' where id=3012
ou se não tiver registros, eu posso usar
insert into test(name) values('john')
Mas eu queria usar a consulta única?
Alguém pode dizer se é possível?
sql-server
merge
upsert
SpringLearner
fonte
fonte
But I wanted to use single query?
Por quê?MERGE
nenhuma versão, nem o SQL Server 2019. Alguns antecedentes sobre isso aqui .Respostas:
Você pode tentar isso
Outra abordagem para obter melhor desempenho é
e também leia esses maus hábitos para chutar no prefixo do esquema
fonte
Supondo que o SQL Server 2008 ou posterior, você poderia usar
MERGE
:Tabela
Inquerir
A
SERIALIZABLE
dica é necessária para a operação correta em alta simultaneidade .Você pode encontrar uma comparação dos métodos comuns de Michael J. Swart aqui:
Mythbusting: soluções simultâneas de atualização / inserção
fonte