Insert Or update (aka Replace or Upsert)
Una delle necessità tipica degli sviluppatori è quella di inserire una riga oppure aggiornarne i valori se la riga è già presente. MySQL supporta il comando REPLACE:
http://dev.mysql.com/doc/refman/5.0/en/replace.html
oppure l’opzione INSERT . ON DUPLICATE KEY UPDATE:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Con SQL Server si può ottenre lo stesso funzionamento, in modo più standard, usando il comando MERGE ed i Row Constructors.
Partendo da questo esempio:
CREATE TABLE dbo.MyTargetTable
(
id INT NOT NULL PRIMARY KEY IDENTITY,
alternate_key VARCHAR(50) UNIQUE,
col_1 INT,
col_2 INT,
col_3 INT,
col_4 INT,
col_5 INT
)
GO
INSERT [dbo].[MyTargetTable] VALUES
('GUQNH', 10, 100, 1000, 10000, 100000),
('UJAHL', 20, 200, 2000, 20000, 200000),
('YKXVW', 30, 300, 3000, 30000, 300000),
('SXMOJ', 40, 400, 4000, 40000, 400000),
('JTPGM', 50, 500, 5000, 50000, 500000),
('ZITKS', 60, 600, 6000, 60000, 600000),
('GGEYD', 70, 700, 7000, 70000, 700000),
('UFXMS', 80, 800, 8000, 80000, 800000),
('BNGGP', 90, 900, 9000, 90000, 900000),
('AMUKO', 100, 1000, 10000, 100000, 1000000)
GO
Per inserire o aggiornare una riga basta eseguire questo statement: