Ho avuto lo stesso bisogno e ho trovato questa risposta ..
Questo crea un record nella tabella dell'azienda (comp), prende l'ID automatico creato nella tabella dell'azienda e lo rilascia in una tabella Staff (personale) in modo che le 2 tabelle possano essere collegate, MOLTI membri del personale a UNA società. Funziona sul mio DB SQL 2008, dovrebbe funzionare su SQL 2005 e versioni successive.
===========================
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
- " @recID" viene utilizzato per contenere il numero ID generato automaticamente dalla società che stiamo per acquisire
AS
Begin
SET NOCOUNT ON
DECLARE @tableVar TABLE (tempID INT)
- La riga sopra è utilizzata per creare una tabella dei tempi per contenere il numero ID generato automaticamente per un uso successivo. Ha solo un campo 'tempID' e il suo tipo INT è lo stesso di '@recID' .
INSERT INTO comp(comp_name, comp_regno, comp_email)
OUTPUT inserted.comp_id INTO @tableVar
- L' USCITA inserita. 'la riga sopra viene utilizzata per estrarre i dati da qualsiasi campo nel record che sta creando in questo momento. Questo dato che vogliamo è il numero di identificazione automatico. In modo da assicurarsi che dice il nome di campo corretto per la vostra tavola, il mio è 'COMP_ID' . Questo viene quindi rilasciato nella tabella dei tempi creata in precedenza.
VALUES (@comp_name, @comp_regno, @comp_email)
SET @recID = (SELECT tempID FROM @tableVar)
- La riga sopra viene utilizzata per cercare la tabella dei tempi creata in precedenza in cui viene salvato l'ID di cui abbiamo bisogno. Poiché in questa tabella temporale è presente un solo record e un solo campo, selezionerà solo il numero ID necessario e lo trascinerà in " @recID ". ' @recID ' ora ha il numero ID che desideri e puoi usarlo come vuoi come l'ho usato qui sotto.
INSERT INTO staff(Staff_comp_id)
VALUES (@recID)
End
- Quindi eccoti. Puoi effettivamente prendere ciò che vuoi in "OUTPUT inserito.WhatEverFieldNameYouWant" riga e creare quali campi vuoi nella tua tabella dei tempi e accedervi per usare come vuoi.
Stavo cercando qualcosa del genere da anni, con questa suddivisione dettagliata, spero che questo aiuti.
OUTPUT INSERTED.ID
potrebbe generare problemi in caso di attivazione attiva sul tavolo