निम्नलिखित साधारण परीक्षण तालिका को देखते हुए एक (गैर तालिका मूल्य) में पहचान स्तंभ के मूल्य प्राप्त करने के चर के बाद INSERT
OUTPUT
खंड का उपयोग कर, लेकिन यह काम नहीं करता:सम्मिलित करें के बाद आउटपुट का उपयोग चर
DECLARE @InsertedId BIGINT;
INSERT INTO Test(Name)
OUTPUT @InsertedId=inserted.Id
VALUES ('Michael')
-- Display resulting id for debugging
SELECT @InsertedId;
-- ...
मैं मैं आसानी से INSERT
के बाद इस SCOPE_IDENTITY()
का उपयोग कर सकते है, लेकिन यहके हिस्से के रूप में यह करने के लिए संभव हैकथन OUTPUT
क्लॉज का उपयोग किए बिना तालिका चर का उपयोग किए बिना?
अद्यतन, यह भी कानूनी नहीं है कि एक और काल्पनिक प्रयास:
-- Return the id as a result set
INSERT INTO Test(Name)
OUTPUT inserted.Id AS TheId
VALUES ('Michael')
-- But you can't use the result set as a derived table...
SELECT TheId FROM
(
INSERT INTO Test(Name)
OUTPUT inserted.Id AS TheId
VALUES ('Michael')
)
-- ..., or you would be able to do this
SELECT TOP 1 @InsertedId=TheId
FROM
(
INSERT INTO Test(Name)
OUTPUT inserted.Id AS TheId
VALUES ('Michael')
)
आपको उस लेख को इंगित करने के लिए चेकमार्क मिलता है! –
+1 - यह चौंकाने वाला है (scope_identity() में बग), और भी अधिक है क्योंकि यह ठीक नहीं होने वाला है। –
'scope_identity' बग के बारे में लिंक मेरे लिए काम नहीं कर रहा है - मैंने पाया [हालांकि एक और] [http://support.microsoft.com/kb/2019779) जहां वे दावा करते हैं कि SQL Server 2008 R2 SP1 के लिए कोई फिक्स है। अन्यथा, एक कामकाज के रूप में, वे एकल रिकॉर्ड के लिए भी 'आउटपुट' का उपयोग करने की सलाह देते हैं – andreister