webForumDet fria alternativet

ON DUPLICATE KEY i MS SQL Server?

Databaser & SQL

3 svar · 570 visningar · startad av Ramzeus

Medlem sedan mars 200642 inlägg
Frågan#1

Finns det någon motsvarighet till INSERT ... ON DUPLICATE KEY UPDATE (som det är i MySQL) i MS SQL Server?
Eller måste man göra en SELECT först som kollar om det redan finns rader, med de angivna nycklarna, som man vill uppdatera iniformation på?

Medlem sedan dec. 20025 483 inlägg
#2

Följande kanske kan vara av intresse:
https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1769317&SiteID=1

Medlem sedan mars 200642 inlägg
#3

Okej

Det bekräftade mina misstankar lite att det inte finns i MS SQL-server...
Tack för länktipset.

Medlem sedan mars 200642 inlägg
#4

En lösning tror jag :)

Hittade ett sätt som jag tror kommer kunna fungera:

IF (SELECT COUNT(*) FROM Messages WHERE InventoryID=10 AND MessageTypeID=27)>0 
	UPDATE Messages SET TimeStamp=CURRENT_TIMESTAMP WHERE InventoryID=10 AND MessageTypeID=27
 ELSE
 	INSERT INTO Messages (InventoryID, MessageTypeID, TimeStamp) VALUES(10, 27, CURRENT_TIMESTAMP)

InventoryID och MessageTypeID är unika nycklar (10 och 27 är exempelvärden).
Detta bör motsvara följande i MySQL:

INSERT INTO Messages (InventoryID, MessageTypeID, TimeStamp) 
VALUES(10, 27, CURRENT_TIMESTAMP) 
ON DUPLICATE KEY UPDATE TimeStamp=CURRENT_TIMESTAMP
261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)