Saya memiliki kebutuhan yang sama dan menemukan jawaban ini ..
Ini menciptakan catatan di tabel perusahaan (comp), itu mengambil ID otomatis yang dibuat di meja perusahaan dan menjatuhkannya ke dalam tabel Staf (staf) sehingga 2 tabel dapat dihubungkan, BANYAK staf ke SATU perusahaan. Ini berfungsi pada DB SQL 2008 saya, harus bekerja pada SQL 2005 dan di atas.
===========================
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' digunakan untuk menyimpan nomor ID yang dibuat secara otomatis oleh Perusahaan yang akan kami ambil
AS
Begin
SET NOCOUNT ON
DECLARE @tableVar TABLE (tempID INT)
- Baris di atas digunakan untuk membuat tabel tempory untuk menampung nomor ID yang dibuat secara otomatis untuk digunakan nanti. Hanya memiliki satu bidang 'tempID' dan tipe INT -nya sama dengan '@recID' .
INSERT INTO comp(comp_name, comp_regno, comp_email)
OUTPUT inserted.comp_id INTO @tableVar
- ' OUTPUT dimasukkan. 'Baris di atas digunakan untuk mengambil data dari bidang apa pun dalam catatan yang dibuatnya saat ini. Data yang kami inginkan adalah nomor autonumber. Jadi pastikan ia mengatakan nama bidang yang benar untuk tabel Anda, milik saya adalah 'comp_id' . Ini kemudian jatuh ke tabel tempory yang kita buat sebelumnya.
VALUES (@comp_name, @comp_regno, @comp_email)
SET @recID = (SELECT tempID FROM @tableVar)
- Baris di atas digunakan untuk mencari tabel tempory yang kita buat sebelumnya di mana ID yang kita butuhkan disimpan. Karena hanya ada satu catatan di tabel tempory ini, dan hanya satu bidang, itu hanya akan memilih nomor ID yang Anda butuhkan dan memasukkannya ke ' @recID '. ' @recID ' sekarang memiliki nomor ID yang Anda inginkan dan Anda dapat menggunakannya sesuka Anda seperti saya telah menggunakannya di bawah ini.
INSERT INTO staff(Staff_comp_id)
VALUES (@recID)
End
- Jadi begitulah. Anda benar-benar dapat mengambil apa yang Anda inginkan di baris 'OUTPUT dimasukkan. ApaEverFieldNameYouWant' dan buat bidang apa yang Anda inginkan di tabel tempory Anda dan akses untuk menggunakan apa pun yang Anda inginkan.
Saya mencari sesuatu seperti ini selama berabad-abad, dengan rincian terperinci ini, saya harap ini membantu.
OUTPUT INSERTED.IDbisa menimbulkan masalah jika ada pemicu aktif di atas meja