Abfüllen von Datensätzen in mehrere Tabellen - Das einfachste der Welt?

21/08/2007 - 16:42 von Adrian Stern | Report spam
Hallo

Ich sitze gerade an einer kleinen (immer grösser werdenden) ASP.NET
Applikation. Über diese soll ich Daten auslesen und abfüllen.

Nun das Problem. So wie ich das sehe macht das jeder der mit mehr als
einer Tabelle arbeitet.

Bsp:
Ich habe 2 Tabellen (Tabelle A und Tabelle B).
Der Hauptschlüssel von Tabelle A ist AutoInkrementiell (?) wird also
Automatisch erzeugt und dient in Tabelle B als Fremdschlüssel.

Wenn ich nun Datensàtze von meinem Formular auslese und in diese 2
Tabellen füllen will, wie muss das Statement aussehen damit der
Fremdschlüssel von Tabelle B automatisch gleich (=) dem Hauptschlüssel
von Tabelle A wird?

Zur Zeit wo ich das Statement los schicke, ist der schlüssel ja noch
nicht bekannt ... also kann ich den eigendlch nicht manuell angeben.

Ich bin auf die Funktion Scope_Identity() gestossen, welche mir ja den
letzten benutzten (?)`Schlüssel zurück gibt ... aber irgendwie denke ich
, da dass ja etwas ist was jeder machen muss, dass es noch einen
einfacheren weg geben muss.

Ich hoffe das war einigermassen verstàndlich ... ist schwer eine DB zu
erklàren.



Wie es Wirklich ausschaut: (tblxxx ist der Tabellen nacme)

tblUmfrage
-pk- IDUmfrage --> Auto
Titel --> Vorher bekannt
Beschreibung --> Vorher bekannt

UND

tblPersonenUmfrage
-fk- IDPerson --> Vorher bekannt
-fk- IDUmfrage --> ?
-fk- PersonenStatus --> Vorher bekannt

IDUmfrage soll halt bei beiden tabellen gleich ausgefüllt werden.


mfg und danke fürs lesen

Adrian Stern
 

Lesen sie die antworten

#1 Uwe Ricken
22/08/2007 - 02:03 | Warnen spam
Servus Adrian,

kapsel die komplette Logik in einer SP.
Der übergibst Du alle Daten, die der User über das
Webform eingibt.

Die SPeicherung kannst Du dann in der SP durchführen

Beispiel:

CREATE PROC proc_app_Kundenauftrag
@CustomerName varchar(100),
@Artikelnummer int,
@Anzahl int,
...
AS
DECLARE @ReturnValue int

BEGIN TRANSACTION
INSERT INTO ...
SET @ReturnValue = SCOPE_IDENTITY()

INSERT INTO Auftrag
(Artikelnummer, Kundennummer, ..)
COMMIT TRANSACTION
VALUES
(@Artikelnummer, @ReturnValue, ...

Die Vorteile sind eindeutig:
- Zentralisierung des Prozesses
- Transaktionssicherheit

HTH ;-)
Gruß, Uwe Ricken
MCP for SQL Server 2000 Database Implementation

db-Berater GmbH i. G. 64390 Erzhausen
http://www.db-berater.de
http://www.memberadmin.de
http://www.conferenceadmin.de
____________________________________________________
dbdev: http://www.dbdev.org
APP: http://www.AccessProfiPool.de
FAQ: http://www.donkarl.com/AccessFAQ.htm

Ähnliche fragen