multiple - SQL Server ofrece algo como MySQL ON DUPLICATE KEY UPDATE
on duplicate key update mysql ejemplo (4)
Me sorprendió que ninguna de las respuestas en esta página contuviera un ejemplo de una consulta real, así que aquí tienes:
Un ejemplo más complejo de insertar datos y luego manejar duplicados
MERGE
INTO MyBigDB.dbo.METER_DATA WITH (HOLDLOCK) AS target
USING (SELECT
77748 AS rtu_id
,''12B096876'' AS meter_id
,56112 AS meter_reading
,''20150602 00:20:11'' AS local_time) AS source
(rtu_id, meter_id, meter_reading, time_local)
ON (target.rtu_id = source.rtu_id
AND target.time_local = source.time_local)
WHEN MATCHED
THEN UPDATE
SET meter_id = ''12B096876''
,meter_reading = 56112
WHEN NOT MATCHED
THEN INSERT (rtu_id, meter_id, meter_reading, time_local)
VALUES (77748, ''12B096876'', 56112, ''20150602 00:20:11'');
En MySQL, si especifica ON DUPLICATE KEY UPDATE y se inserta una fila que causaría un valor duplicado en un índice UNIQUE o PRIMARY KEY, se realizará una ACTUALIZACIÓN de la fila anterior. Por ejemplo, si la columna a se declara como ÚNICA y contiene el valor 1, las dos declaraciones siguientes tienen el mismo efecto:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;
No creo haber encontrado nada parecido en T-SQL. ¿SQL Server ofrece algo comparable a la ACTUALIZACIÓN DE LLAVE DUPLICADA de MySQL?
No hay una ACTUALIZACIÓN DE LLAVE DUPLICADA equivalente, pero FUSIÓN y CUÁNDO COINCIDIO podría funcionar para usted
SQL Server 2000 en adelante tiene un concepto en lugar de desencadenantes, que puede lograr la funcionalidad deseada, aunque habrá un desagradable disparador oculto detrás de las escenas.
Verifique la sección "Insertar o actualizar?"
http://msdn.microsoft.com/en-us/library/aa224818(SQL.80).aspx
SQL Server 2008 tiene esta característica, como parte de TSQL.
Consulte la documentación sobre la instrucción MERGE aquí - http://msdn.microsoft.com/en-us/library/bb510625.aspx