DocSpencer Geschrieben 1. Juni 2015 Geschrieben 1. Juni 2015 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 Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 1. Juni 2015 Geschrieben 1. Juni 2015 https://msdn.microsoft.com/en-us/library/ks9f57t0.aspx Zitieren
Guybrush Threepwood Geschrieben 1. Juni 2015 Geschrieben 1. Juni 2015 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. Zitieren
DocSpencer Geschrieben 1. Juni 2015 Autor Geschrieben 1. Juni 2015 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 Danke im Voraus Doc Zitieren
Guybrush Threepwood Geschrieben 1. Juni 2015 Geschrieben 1. Juni 2015 Ja, indem du sie einfach nach einander ausführst. Warum das bei dir nicht klappt lässt sich ohne Code nicht sagen. Zitieren
DocSpencer Geschrieben 1. Juni 2015 Autor Geschrieben 1. Juni 2015 Letzer Stand war ein Fehler mit dem FK. Den konnte ich nun auch beheben. Vielen Dank euch !! Zitieren
RipperFox Geschrieben 2. Juni 2015 Geschrieben 2. Juni 2015 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 Zitieren
Empfohlene Beiträge
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.