एकमात्र व्यवहार्य तरीका ऐसा करने के लिए INT IDENTITY
. का उपयोग करना है SQL सर्वर डेटाबेस प्रदान करता है। इस पर मेरा विश्वास करें - आप नहीं इसे स्वयं करने का प्रयास करना चाहते हैं!
बस उपयोग करें
CREATE TABLE dbo.YourTableOne(ID INT IDENTITY(1,1), ...other columns...)
और इसके साथ किया जाना चाहिए।
एक बार जब आप अपनी पहली तालिका में एक पंक्ति सम्मिलित करते हैं, तो आप इस तरह पहचान कॉलम का मान प्राप्त कर सकते हैं:
-- do the insert into the first table
INSERT INTO dbo.YourTableOne(Col1, Col2, ...., ColN)
VALUES (Val1, Val2, ...., ValN)
DECLARE @NewID INT
-- get the newly inserted ID for future use
SELECT @NewID = SCOPE_IDENTITY()
-- insert into the second table, use first table's new ID for your FK column
INSERT INTO dbo.YourTableTwo (FKColumn, ......) VALUES(@NewID, ......)
अपडेट करें: यदि आपको पहली तालिका में कई पंक्तियों को सम्मिलित करने और कई उत्पन्न ID
को कैप्चर करने की आवश्यकता है मान, OUTPUT
का उपयोग करें खंड:
-- declare a table variable to hold the data
DECLARE @InsertedData TABLE (NewID INT, ...some other columns as needed......)
-- do the insert into the first table
INSERT INTO dbo.YourTableOne(Col1, Col2, ...., ColN)
OUTPUT Inserted.ID, Inserted.Col1, ..., Inserted.ColN INTO @InsertedData(NewID, Col1, ..., ColN)
VALUES (Val1, Val2, ...., ValN)
और फिर वहां से चले जाओ। आप नई सम्मिलित पंक्तियों से अस्थायी तालिका चर में कोई भी मान प्राप्त कर सकते हैं, जो तब आपको यह तय करने की अनुमति देगा कि आपकी दूसरी तालिका के लिए किन पंक्तियों के लिए कौन से नए आईडी मानों का उपयोग करना है