webForumDet fria alternativet

Får inte till update funktion, går det?

Databaser & SQL

1 svar · 423 visningar · startad av Sjodahl

Medlem sedan maj 20033 218 inlägg
Frågan#1

Har idag en sp som ser ut enligt följande:

BEGIN
	
	SELECT E.id,E.UserId,E.Added,E.Description, C.CategoryName, C.IncomeORExpense, E.Amount FROM UserExpense AS E
	INNER JOIN UserCategories AS C
	ON E.UserId = C.UserId
	AND 
	 E.Category = C.id
	WHERE E.UserId=@UserID
	ORDER BY E.Added DESC	
	
END

Det jag vill kunna uppdatera är följande:

E.Description
C.CategoryName
C.IncomeORExpense
E.Amount.

Går det att skriva i en fråga eller måste jag bryta ner det till mer än en fråga?

Medlem sedan dec. 19995 874 inlägg
#2

Det går inte att uppdatera flera tabeller samtidigt på det viset.

Det du däremot kan göra är att joina tabellerna i din update-sats, dessa kan du sedan använda i ditt wherevillkor eller som invärde till din update.

exempel

update userexpense
set description = 'categoryname: '+c.categoryname, amount = 100
from UserExpense AS E
	INNER JOIN UserCategories AS C
	ON E.UserId = C.UserId
	AND E.Category = C.id
	WHERE E.UserId=@UserId

Notera hur c.categoryname används för att fylla upp description i tabellen userexpense.

Ett förslag är att du lägger det i en lagrad procedur med en transaktion runt.

BEGIN TRANSACTION
UPDATE UserExpense
UPDATE UserCategories
COMMIT TRANSACTION
260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)