webForumDet fria alternativet
Logga in / Bli medlem

Uppdatera relaterad post i annan tabell

Databaser & SQL

5 svar · 382 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Trådstart#1

Hej!

Jag använder mig av SQL-Express och har följande kod som uppdaterar artiikeldatabsen tblArticle:

'Uppdatera tblArticle om artikeln redan finns
					sSQL = "UPDATE tblArticle SET articleNumber = '" & sEnumber & "', articleName = '" & sArticleName & "', articleUnit = '" & sUnit & "' WHERE articleNumber = '" & sEnumber & "'"
					objConn.Execute sSQL, lngRA, 128
					
					iUpdatesArticle = iUpdatesArticle + lngRA
				
					if lngRa = 0 then
						'Lägga till artikeln i tblArticle om den inte finns
						sSQL = "INSERT INTO tblArticle (articleNumber, articleName, articleUnit) VALUES ('" & sEnumber & "', '" & sArticleName & "', '" & sUnit & "')"		
						objConn.Execute sSQL,,128
						
						iInsertsArticle = iInsertsArticle + 1
					End if

Hur gör jag för att ändringen i artikelbenämningen i tblArticle ska följa med till tblCart?
Dvs ändras artikeln: EKK 3G1,5 ----> EKK 3G1,5R i tblArticle så ska även ändringen följa med till tblCart?

tblCart
*orderId
*userId
*articleName
*articleAmount
Mvh
Henrik

Medlem sedan juni 200032 967 inlägg
#2

Två förslag:

  1. Lagra inte benämningen i cart-tabellen, plocka ut med join istället.
  2. Skapa en trigger på artikeltabellen. Typ:
CREATE TRIGGER nameupdate
ON tblArticle
FOR UPDATE 
AS
IF UPDATE(articleName)
BEGIN
	UPDATE tblCart
	SET articleName = i.articleName
	FROM inserted i
	INNER JOIN tblCart c ON i.articleNumber = c.articleNumber
END

Triggern är såklart inte testad, men kan ge dig ett hum om hur det kan se ut.

edit: vi slänger in det tredje alternativet också:
3) Foreign keys + ON UPDATE CASCADE

mvh

Medlem sedan jan. 20013 582 inlägg
#3

:)

ok!

Hmm, om jag väljer Triggeralternativet... Var ska den "koden" ligga?

Mvh
Henrik

Medlem sedan juni 200032 967 inlägg
#4

Jag vet inte hur SQL Server Management Studio Express fungerar, men det borde bara vara att köra koden om du inte hittar något ställe att lägga in triggers.

Medlem sedan jan. 20022 440 inlägg
#5

Enklast är om du använder dig av SQL Express 2005 Management Studio och väljer: New query, ändrar (så den passar dig) @nders förslag och klickar på execute.

Medlem sedan jan. 20013 582 inlägg
#6

Hej!

Jag kommer att ändra min databasdesign enligt emissons förslag.... Därför kommer jag att använda mig av @nders alternativ 1. Men det blir när jag kommer hem igen i början på juli!

Mvh
Henrik

265 ms totalt · 4 externa anrop · v20260731065814-full.7d626504
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)