INSERT

2012-01-16 15 views
5

पर पहचान कॉलम मान प्राप्त करें I प्रक्रिया बनाने के लिए SQL Server 2008 का उपयोग कर रहा हूं।INSERT

मैं एक लेखा परीक्षा तालिका

insert into Listuser 
(
    UserID, 
    ListID, 
    AuditCreated 
) 
    select 
    UserID, 
    ListID, 
    GETDATE() 
from ListUser where Surname='surname' 

मैं scope_identity() उपयोग कर रहा हूँ listuser मेज से पहचान स्तंभ मिल और एक अन्य लॉग तालिका

को पहचान स्तंभ को सम्मिलित करने में डालने के लिए निम्नलिखित एसक्यूएल बयान उपयोग कर रहा हूँ यदि चयन कथन में 1 से अधिक मान हैं, तो दोनों कॉलम का पहचान मान कैसे प्राप्त करें और लॉग तालिका में डालें?

Thanjs

उत्तर

12

आप एक से अधिक पहचान मूल्यों डाला जा रहा है पर कब्जा करने की जरूरत है, मैं OUTPUT खंड का उपयोग करेंगे:

यह आपके ListUser तालिका में सभी पंक्तियाँ दर्ज हो जाएगा और यह उत्पादन सब होगा @TableOfIdentities तालिका चर

Read more about the OUTPUT clause on MSDN

में इस सम्मिलित करें द्वारा उत्पन्न पहचान

ये मान तालिका चर में डाला जाता है, और आप डालने के बाद उस तालिका चर से उन्हें बाहर का चयन कर सकते हैं, और जो कुछ भी आप उन लोगों के साथ क्या करना होगा:

SELECT * FROM @TableOfIdentities 

अद्यतन: के उपयोग टेबल वैरिएबल यहां एक उदाहरण के रूप में है - निश्चित रूप से आप SQL सर्वर में डेटा को "सामान्य" तालिका में भी आउटपुट कर सकते हैं - और यदि आपको इसकी आवश्यकता हो, तो आप प्रत्येक डाली गई पंक्ति के लिए कई मान भी आउटपुट कर सकते हैं - ताकि आपके पास कुछ ऐसा हो :

INSERT INTO dbo.Listuser(UserID, ListID, AuditCreated) 
    OUTPUT Inserted.ID, Inserted.UserID, Inserted.SurName, GETDATE() 
     INTO AuditTable(IdentValue, UserID, Surname, InsertDate) 
    SELECT 
     UserID, ListID, GETDATE() 
    FROM 
     dbo.ListUser 
    WHERE 
     Surname = 'surname' 
+0

क्या हम सीधे स्थायी तालिका – user386258

+1

@ user3862 पर जोड़ सकते हैं 58: हम कर सकते हैं, लेकिन कुछ प्रतिबंध हैं क्योंकि लक्ष्य तालिका में क्या चीजें नहीं हो सकती हैं। अधिक जानकारी के लिए marc_s द्वारा लिखे आलेख को पढ़ें। –

+0

@ marc_s, क्या मैं आईडी वैरिएबल – user386258

संबंधित मुद्दे