Zum Inhalt springen

SQL Query: Insert into zwei abhängige Tabellen


DocSpencer

Empfohlene Beiträge

Moinsen,

Ich habe da mal ne Frage.

Und zwar will ich in einem SQL Server 2012 einen Datensatz in Tabelle a und Tabelle b schreiben und habe in Tabelle b die ID von a als FK.

Wie greife ich nun direkt beim Erstellen des Datensatzes die ID in a die ja dann erst gesetzt wird ab um sie in b mit einzutragen???

Hat da jemand von euch nen Stichwort oder ne Idee wie ich das Umsetzen kann?

Vielen Dank im Voraus

Doc

Link zu diesem Kommentar
Auf anderen Seiten teilen

AFAIK gar nicht ;)

Wenn du kein Framework wie Linq benutzt sondern den Datenzugriff selber programmierst wirst du wohl erst den Datensatz einfügen müssen, dann die ID auslesen und dann den anderen Datensatz einfügen müssen. Ein Framework könnte dir das abnehmen, dürfte aber intern das gleiche machen.

Das ist z.B. auch ein Grund warum man keine automatisch generierten IDs verwendet, sondern diese selbst vergibt. Z.B. mit Guids.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antworten.

Ich habe derzeit mehrere SqlCommands die, wie ich dusseligerweise annahm, nacheinander abgearbeitet würden...

OK, mein fehler!

Es geht bei mir halt um nen "einfaches" Button_click_event in einer ASP.Net Web App bei dem ich die ganzen Daten verarbeiten will/muss. Gibt es irgendeine Möglichkeit der Kiste zu sagen - Erstelle erst Datensatz a und wenn das durch ist führe Query b aus und hole die Daten und DANN geh in Query c und betanke Table b??

Ich hoffe ihr versteht meinen Gedankengang :D

Danke im Voraus

Doc

Link zu diesem Kommentar
Auf anderen Seiten teilen

AFAIK gar nicht ;)

Wenn du kein Framework wie Linq benutzt sondern den Datenzugriff selber programmierst wirst du wohl erst den Datensatz einfügen müssen, dann die ID auslesen und dann den anderen Datensatz einfügen müssen.

Jain, ab SQL Server 2005 gibt's beim INSERT Statement den Parameter "OUTPUT", welcher benutzt werden kann um automatisch generierte Spalten (z.B. identity, durch Trigger generiert, etc.) auszugeben:


USE Northwind

INSERT INTO Employees (LastName, FirstName) 

OUTPUT inserted.EmployeeID

VALUES ('Kelso', 'Bob')

Der INSERT liefert mir die geschriebene EmployeeID zurück.

Man könnte also zwei INSERTs in einer SQL-Query vereinen, in dem man den Rückgabewert des ersten INSERTs in Variable schreibt und beim zweiten verwendet.

Generell muss man sich überlegen wie viel Funktionalität/Logik man in die Datenbank steckt. Man kann mit Views, StoredProcedures, Triggern, etc. sicher OPs Problem direkt in der DB erledigen - falls das gewünscht sein sollte.

Wenn man Programmlogik in Anwendung und Datenbank hat macht es das Debuggen natürlich nicht einfacher :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...