Just nu i M3-nätverket
Gå till innehåll

Hur uppdatera/radera i en kopplingstabell?


lisbet

Rekommendera Poster

Hej

 

Jag har ett formulär på en asp-sida som sparas ner i tabell A. Ett av fälten i formuläret är av typen <select multiple name='ts'>, värdena i select'en hämtas från tabell B. Jag har gjort en kopplingstabell, tabell C, som innehåller id (pk) från tabell A och id (pk) från tabell B.

 

Jag har löst det om det är ny information som ska sparas, dvs insert. Först sparar jag ner informationen till tabell A och får tillbaka ett id. Jag hämtar innehållet i ts och kör en split och for each på den och för varje innehåll så gör jag en insert till tabell C.

 

Däremot vet jag inte hur jag ska lösa det när man plockar upp formuläret för att editera redan sparad information. Att uppdatera tabell A är inga problem, men hur uppdaterar jag min kopplingstabell? Det kan ju finnas alternativ som var valda förra gången och dessa ska raderas från tabell C innan jag lägger till de som är valda nu ...

 

Hur sparar man ner detta i databasen på bästa sätt?

Jag använder MSSQL.

 

Tack på förhand

/Lisbet

 

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Till att börja med skulle jag lägga allt två stored procedures, typ ap_StoreDataA och ap_StoreDataC där du inte behöver ta hänsyn utifrån om datan är ny eller bara ska uppdateras. Om datan är ny skickar du helt enkelt bara in en nolla istället för TabellA.AID i den första SPn

 

[log]

CREATE PROCEDURE ap_StoreDataA 
@AID int, 
@Data1 varchar(50),
@Data2 varchar(50)
 AS
[color="#0000ff"]If[/color] (@AID=0)
BEGIN
	INSERT INTO TabellA  (Data1,Data2) VALUES (@Data1,@Data2)
	[color="#0000ff"]Select[/color] IDENT_CURRENT([color="#006400"]'TabellA') AS NewId[/color]
[color="#0000ff"]End[/color]
[color="#0000ff"]Else[/color]
BEGIN
	UPDATE TabellA [color="#0000ff"]Set[/color] Data1=@Data1,Data2=@Data2 WHERE AID=@AID
	DELETE FROM TabellC WHERE AID=@AID
[color="#0000ff"]End[/color]

CREATE PROCEDURE ap_StoreDataC 
@AID int, 
@BID [color="#0000ff"]In[/color]t
AS
	INSERT INTO TabellC (AID,BID) VALUES (@AID,@BID)

[/log]

 

TILLÄGG: Du skulle kunna lösa det med enbart en SP också, genom att skicka in all data som skall in i TabellC som en kommaseparerad sträng som du sedan skapar en vy av som du sedan parsar med en cursor

[inlägget ändrat 2005-03-03 11:15:21 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Det låter väl ungefär som jag har tänkt mig, ska ta och bygga vidare på det.

 

Tack för hjälpen

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...