SQL para determinar si un solo dato se ejecuta mediante una clave en una actualización o inserción
En un proceso como Actualizar si hay una clave o Insertar si no hay clave, generalmente se realiza una selección en función de la clave y el proceso se determina comprobando si hay un caso. SQL Server 2008 también agrega una instrucción "merge" que permite realizar una actualización y una inserción (y, a continuación, eliminar) con una única instrucción. Sin embargo, esta es una comparación de dos tablas y no es adecuada para datos individuales.
En realidad, hay una manera de actualizar fácilmente una fila determinando Update e Insert sin tener que comprobar el número de registros con una instrucción select.
update [TableName]
set [ColumnName] = @value
-- : 他更新 SQL
where [KeyColumnName] = @value
-- : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
[ColumnName]
-- : 他更新 SQL
)
values
(
@value
-- : 他更新値
)
La palabra clave aquí es "@@ROWCOUNT". El @@ROWCOUNT puede recuperar el número de filas a las que se aplicó el SQL anterior. El código anterior ejecuta primero la instrucción Update y, si se ha actualizado, @@ROWCOUNT devuelve 1 o superior, por lo que no ejecuta la siguiente instrucción Insert. Por el contrario, si no se actualiza ninguna fila en la instrucción Update, @@ROWCOUNT devuelve 0, ejecute el juicio de instrucción Insert by IF.
Dado que el SQL anterior es una plantilla, reemplace los nombres y valores de columna que se actualizarán en el momento adecuado. @value es solo un nombre de variable, así que reemplácelo con el valor que desea actualizar.