Aynı ihtiyacı vardı ve bu cevabı buldum ..
Bu, şirket tablosunda (comp) bir kayıt oluşturur, şirket tablosunda oluşturulan otomatik kimliği yakalar ve bunu bir Personel tablosuna (personel) bırakır, böylece 2 tablo, BİR şirkete ÇOK personel bağlanabilir. SQL 2005 DB üzerinde çalışır, SQL 2005 ve üstü üzerinde çalışmalıdır.
===========================
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' , kapmak üzere olduğumuz Şirket tarafından otomatik olarak oluşturulan kimlik numarasını tutmak için kullanılır
AS
Begin
SET NOCOUNT ON
DECLARE @tableVar TABLE (tempID INT)
- Yukarıdaki satır, daha sonra kullanmak üzere otomatik olarak oluşturulan kimlik numarasını tutmak için geçici bir tablo oluşturmak için kullanılır. Bu yalnızca bir alan 'tempID' vardır ve tipi INT aynıdır '@recID' .
INSERT INTO comp(comp_name, comp_regno, comp_email)
OUTPUT inserted.comp_id INTO @tableVar
- ' ÇIKIŞ takıldı. 'satırı yukarıdaki verileri şu anda oluşturduğu kayıttaki herhangi bir alandan almak için kullanılır. İstediğimiz bu veri kimlik otomatik numarasıdır. Bu yüzden tablonuz için doğru alan adını söylediğinden emin olun, benimki 'comp_id' . Bu daha sonra daha önce yarattığımız geçici tabloya düşüyor.
VALUES (@comp_name, @comp_regno, @comp_email)
SET @recID = (SELECT tempID FROM @tableVar)
- Yukarıdaki satır, ihtiyacımız olan kimliğin kaydedildiği, daha önce oluşturduğumuz geçici tabloyu aramak için kullanılır. Bu geçici tabloda yalnızca bir kayıt ve yalnızca bir alan olduğundan, yalnızca ihtiyacınız olan kimlik numarasını seçecek ve ' @recID ' içine bırakacaktır . ' @recID ' artık istediğiniz kimlik numarasına sahiptir ve aşağıda nasıl kullandığımı istediğiniz gibi kullanabilirsiniz.
INSERT INTO staff(Staff_comp_id)
VALUES (@recID)
End
-- Al işte ozaman, buyur. Aslında 'OUTPUT eklenmiş.WhatEverFieldNameYouWant' satırında istediğinizi alabilir ve tempory tablonuzda istediğiniz alanları oluşturabilir ve istediğiniz şekilde kullanmak için ona erişebilirsiniz.
Çağlar boyunca böyle bir şey arıyordum, bu ayrıntılı yıkımla, umarım bu yardımcı olur.
OUTPUT INSERTED.ID
Masada aktif bir tetikleyici olması durumunda sorun yaratabilir