मैं किसी तालिका तालिका में एक तालिका ए में एकाधिक रिकॉर्ड डाल रहा हूं। क्या तालिका का पहचान मान प्राप्त करने का कोई तरीका है एक कर्सर करने के साथ रिकॉर्ड रिकॉर्ड और अद्यतन तालिका बी रिकॉर्ड?एकाधिक रिकॉर्ड कैसे सम्मिलित करें और पहचान मान कैसे प्राप्त करें?
Create Table A
(id int identity,
Fname nvarchar(50),
Lname nvarchar(50))
Create Table B
(Fname nvarchar(50),
Lname nvarchar(50),
NewId int)
Insert into A(fname, lname)
SELECT fname, lname
FROM B
मैं एमएस एसक्यूएल सर्वर का उपयोग कर रहा 2005
मुझे एहसास है कि यह एक पुराना प्रश्न है और यह SQL सर्वर 2005 निर्दिष्ट करता है लेकिन चूंकि यह 2008 में उपलब्ध मेरिज स्टेटमेंट को दिखाने का पहला परिणाम है और बाद में समाधान की तलाश करने वालों के लिए इसका उल्लेख किया जाना चाहिए। TargetTable में विलय का उपयोग ( का चयन करें .... ) स्रोत के रूप में पर 1 = 2 जब तत्कालीन मिलान नहीं सम्मिलित करें .... आउटपुट inserted.ID जांच TempTable ( InsertedID ) – oldegreyg
आपको एक साधारण डालने के लिए विलय की आवश्यकता नहीं है। मर्ज एक डालने/अपडेट के लिए अच्छा है, लेकिन एक साधारण डालने के लिए ओवरकिल। एंडी के आउटपुट जवाब ने मेरे लिए काम किया और इंडेक्स लॉक को दूर करने में मदद की। – CodeMonkeyForHire
एंडी इरविंग का जवाब सबसे अच्छा है। ट्रिगर्स बेकार हैं और अपनी लक्षित तालिका पर मनमाने ढंग से संचालन के लिए अच्छी तरह से काम नहीं करते हैं, खासकर यदि आपका लक्ष्य अस्थायी है या सिर्फ मध्यवर्ती है। डैरेन का जवाब गलत है, यदि आप पंक्तियों का एक सेट डाल रहे हैं, तो लक्ष्य तालिका में उनका क्रम आवश्यक रूप से आपके सेट के क्रम के समान नहीं है। दिमित्री का रास्ता खराब है क्योंकि इसे धीमी प्रदर्शन के अनुसार एक पंक्ति में डालने के लिए एक लूप की आवश्यकता होती है, जब आप कर सकते हैं तो हमेशा सेट का उपयोग करें। कॉरी का रास्ता खराब है और उसने समझाया, "जब तक वे संघर्ष नहीं करते हैं।" यह शनिवार की रात सी – clemahieu