Ich hatte das gleiche Bedürfnis und fand diese Antwort ..
Dadurch wird ein Datensatz in der Firmentabelle (comp) erstellt. Dabei wird die in der Firmentabelle erstellte automatische ID erfasst und in eine Staff-Tabelle (staff) abgelegt, sodass die beiden Tabellen mit VIELEN Mitarbeitern mit EINER Firma verknüpft werden können. Es funktioniert auf meiner SQL 2008-Datenbank, sollte auf SQL 2005 und höher funktionieren.
===========================
CREATE PROCEDURE [dbo].[InsertNewCompanyAndStaffDetails]
@comp_name varchar(55) = 'Big Company',
@comp_regno nchar(8) = '12345678',
@comp_email nvarchar(50) = 'no1@home.com',
@recID INT OUTPUT
- Die ' @recID' wird verwendet, um die automatisch generierte ID-Nummer des Unternehmens zu speichern, die wir abrufen möchten
AS
Begin
SET NOCOUNT ON
DECLARE @tableVar TABLE (tempID INT)
- In der obigen Zeile wird eine temporäre Tabelle erstellt, in der die automatisch generierte ID-Nummer für die spätere Verwendung gespeichert ist. Es hat nur ein Feld 'tempID' und sein Typ INT ist der gleiche wie der von '@recID' .
INSERT INTO comp(comp_name, comp_regno, comp_email)
OUTPUT inserted.comp_id INTO @tableVar
- Der ' OUTPUT eingefügt. Die obige Zeile wird verwendet, um Daten aus einem beliebigen Feld in dem Datensatz abzurufen, den sie gerade erstellt. Diese Daten, die wir wollen, sind die ID-Autonummer. Stellen Sie also sicher, dass der richtige Feldname für Ihre Tabelle angegeben ist. Mein Name lautet 'comp_id' . Dies wird dann in die zuvor erstellte temporäre Tabelle verschoben.
VALUES (@comp_name, @comp_regno, @comp_email)
SET @recID = (SELECT tempID FROM @tableVar)
- In der obigen Zeile wird die zuvor erstellte temporäre Tabelle durchsucht, in der die benötigte ID gespeichert ist. Da diese temporäre Tabelle nur einen Datensatz und nur ein Feld enthält, wird nur die von Ihnen benötigte ID-Nummer ausgewählt und in ' @recID ' abgelegt . ' @recID ' hat jetzt die gewünschte ID-Nummer und Sie können sie so verwenden, wie Sie es möchten, wie ich sie unten verwendet habe.
INSERT INTO staff(Staff_comp_id)
VALUES (@recID)
End
-- Hier bitteschön. Sie können in der Zeile 'OUTPUT insert.WhatEverFieldNameYouWant' nach Belieben greifen, die gewünschten Felder in Ihrer temporären Tabelle erstellen und darauf zugreifen, um zu verwenden, wie immer Sie möchten.
Ich habe ewig nach so etwas gesucht, mit dieser detaillierten Aufschlüsselung hoffe ich, dass dies hilft.
OUTPUT INSERTED.ID
könnte im Falle eines aktiven Auslösers auf dem Tisch ein Problem erzeugen