webForumDet fria alternativet

Uppdatera relaterad post i annan tabell

5 svar · 382 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#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

@ndersMedlem sedan juni 200032 969 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

devotionMedlem sedan jan. 20013 582 inlägg
#3

:)

ok!

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

Mvh
Henrik

@ndersMedlem sedan juni 200032 969 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.

CatZMedlem 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.

devotionMedlem 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

128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)