webForumDet fria alternativet
Logga in / Bli medlem

MSSQL UPDATE fråga

Databaser & SQL

4 svar · 532 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena
Jag ska uppdatera 85 Poster i en SQL Server Databas.
Plockar ut de aktuella posterna såhär:

SELECT
b.id
FROM customers a, regsites b
WHERE a.customer_flag = 11
AND a.id = b.cId
AND b.sSajt = 'Parbet'

Nu ska jag uppdatera de här posterna, kan jag då köra det här?

UPDATE regsites SET
sSajt = 'Betsafe'
WHERE id IN (
	SELECT
	b.id
	FROM customers a, regsites b
	WHERE a.customer_flag = 11
	AND a.id = b.cId
	AND b.sSajt = 'Parbet'
)

Jag är helsäker på att det här _bör_ funka, inget annat får absolut uppdateras, förutom de här 85 posterna jag plockar ut i mitt övre exempel.

Vad tror ni?

Tack!

Medlem sedan sep. 20005 700 inlägg
#2

Använd dig av transaktionshanteringen.
Kör

BEGIN TRAN
UPDATE regsites SET
sSajt = 'Betsafe'
WHERE id IN (
	SELECT
	b.id
	FROM customers a, regsites b
	WHERE a.customer_flag = 11
	AND a.id = b.cId
	AND b.sSajt = 'Parbet'
)

Kolla att endast dina 85 rader uppdaterades och kör isåfall

COMMIT TRAN

Om det inte stämmer så kör du istället

ROLLBACK
Medlem sedan feb. 20034 441 inlägg
#3

Aha, så det funkar så, tack!
Nu körde jag mitt script ovan och den uppdaterade bara de 85 aktuella posterna, så allt fungerade som det skulle, men det kan vara mkt bra att använda det där framöver.

:)

En fråga till bara, kör jag allt det där i Query Browser (eller vad det heter), väljer tabell, högerklickar, script table as - UPDATE to och sen kör de där tre?

Medlem sedan sep. 20005 700 inlägg
#4

Ja, så kan du göra. Utnyttja att du kan exekvera vissa kommandon i taget genom att markera kommandot och trycka Ctrl-E, för du vill ju inte köra alla tre kommandon på en gång (eftersom du inte vet om du ska köra COMMIT TRAN eller ROLLBACK).

Medlem sedan feb. 20034 441 inlägg
#5

Nä just det.
Tack för hjälpen!

270 ms totalt · 4 externa anrop · v20260731065814-full.05830320
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)