मुझे उसी की जरूरत थी और यह जवाब मिला ।।
यह कंपनी तालिका (COMP) में एक रिकॉर्ड बनाता है, यह कंपनी की मेज पर बनाई गई ऑटो आईडी को पकड़ लेता है और कर्मचारी तालिका (स्टाफ) में छोड़ देता है ताकि 2 तालिकाओं को जोड़ा जा सके, MANY कर्मचारी एक कंपनी में। यह मेरी SQL 2008 DB पर काम करता है, SQL 2005 और इसके बाद के संस्करण पर काम करना चाहिए।
===========================
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' का उपयोग कंपनी ऑटो जनरेट आईडी नंबर को रखने के लिए किया जाता है जिसे हम हथियाने वाले हैं
AS
Begin
SET NOCOUNT ON
DECLARE @tableVar TABLE (tempID INT)
- बाद में उपयोग के लिए ऑटो जनरेटेड आईडी नंबर को होल्ड करने के लिए टेंपररी टेबल बनाने के लिए ऊपर की लाइन का उपयोग किया जाता है। यह केवल एक ही क्षेत्र 'tempID' है और इसके प्रकार INT रूप में ही है '@recID' ।
INSERT INTO comp(comp_name, comp_regno, comp_email)
OUTPUT inserted.comp_id INTO @tableVar
- ' OUTPUT डाला गया। 'ऊपर दी गई लाइन का उपयोग किसी भी क्षेत्र के डेटा को रिकॉर्ड करने के लिए किया जाता है जो वह अभी बना रहा है। यह डेटा हम चाहते हैं कि आईडी ऑटोनम्बर हो। तो सुनिश्चित करें कि यह आपकी तालिका के लिए सही फ़ील्ड नाम कहता है, मेरा 'comp_id' है । यह तब हमने पहले बनाई गई टेम्पररी टेबल में गिरा दिया।
VALUES (@comp_name, @comp_regno, @comp_email)
SET @recID = (SELECT tempID FROM @tableVar)
- ऊपर दी गई लाइन का उपयोग हमने पहले बनाई गई टेम्पररी टेबल को खोजने के लिए किया है, जहां हमें जिस आईडी की जरूरत है, वह सेव हो गई है। चूंकि इस टेंपरेरी टेबल में केवल एक ही रिकॉर्ड है, और केवल एक फ़ील्ड है, यह केवल आपको आवश्यक आईडी नंबर का चयन करेगा और इसे ' @recID ' में छोड़ देगा । ' @recID ' में अब आपके पास वांछित आईडी संख्या है और आप इसका उपयोग कर सकते हैं कि आप कैसे चाहते हैं जैसे मैंने इसे नीचे उपयोग किया है।
INSERT INTO staff(Staff_comp_id)
VALUES (@recID)
End
-- तो यह तूम गए वहाँ। आप वास्तव में 'OUTPUT डाले गए। WhatEverFieldNameYouWant' लाइन में जो कुछ भी चाहते हैं, उसे वास्तव में हड़प सकते हैं और अपनी टेंपरेरी टेबल में उन फ़ील्ड्स को बना सकते हैं, जिन्हें आप कभी भी उपयोग करना चाहते हैं।
मैं उम्र के लिए कुछ इस तरह की तलाश कर रहा था, इस विस्तृत विराम के साथ, मुझे आशा है कि यह मदद करता है।
OUTPUT INSERTED.IDमेज पर एक सक्रिय ट्रिगर के मामले में समस्या उत्पन्न कर सकता है