Tengo una prueba de tabla con ID de columnas, qué clave principal y autoincrementado y nombre. Quiero insertar un nuevo registro si y solo si no hay registros. Por ejemplo
input es id = 30122 y name = john
si hay registros con la identificación 30122, entonces he actualizado la columna de nombre a John, si no hay registros, entonces inserto un nuevo registro.
Puedo hacerlo usando 2 consultas como
select * from test where id=30122
si tiene algunos registros, entonces puedo usar update test set name='john' where id=3012
o si no tiene registros, entonces puedo usar
insert into test(name) values('john')
¿Pero quería usar una sola consulta?
¿Alguien puede decir si es posible?
sql-server
merge
upsert
SpringLearner
fuente
fuente
But I wanted to use single query?
¿Por qué?MERGE
en ninguna versión, incluso SQL Server 2019. Algunos antecedentes sobre eso aquí .Respuestas:
Puedes probar esto
Otro enfoque para un mejor rendimiento es
y también lea estos malos hábitos para iniciar el prefijo de esquema
fuente
Asumiendo SQL Server 2008 o posterior, puede usar
MERGE
:Mesa
Consulta
La
SERIALIZABLE
sugerencia es necesaria para un funcionamiento correcto con alta concurrencia .Puede encontrar una comparación de los métodos comunes de Michael J. Swart aquí:
Mitos: soluciones simultáneas de actualización / inserción
fuente