Tuesday 15 April 2014

sql - INSERT INTO with SELECT using OUTPUT -


मैं pt_id को मेरी अस्थायी तालिका में OUTPUT , हालांकि मैं pt_id को ct_tarf में सम्मिलित नहीं कर रहा हूं, मुझे क्या करना चाहिए?

मुझे निम्न त्रुटि मिलती है:

बहु-भाग पहचानकर्ता 'pt_id' बाध्य नहीं किया जा सकता।

प्रश्न: < / P>

  DECLARE @tbl_ids_tarf TABLE (pt_id INT, pt_id_tarf INT) INSERT dbo.ct_tarf (tr_id_serv, tr_name, tr_money) OUTPUT pt_id, inserted.tr_id में @tbl_ids_tarf (ptr_id, ptr_id_tarf) SELECT pt_id_serv, pt_name , Pt_money FROM dbo.opr_prop_tar WHERE pt_id_tarf  

SQL2008 +:

यह मानते हुए कि आप @tbl_ids_tarf में प्रविष्ट करना चाहते हैं (जो OUTPUT ... में खंड का लक्ष्य है) उन कॉलमों से मान जिन्हें इनके द्वारा नहीं लौटाया गया है डाला गया या हटाया गया वर्चुअल टेबल तब एक समाधान का उपयोग INSERT के स्थान पर है:

  DECLARE @Target TABLE (कॉल 1 आईएनटी) निगमित मूल्यों (1), (2); DECLARE @Output TABLE (Col1 INT, ColB INT); ; स्रोत के रूप में (से चुनें * FROM (मूल्य (10, 100), (20, 200), (30, 300)) x (कोला, कोलब)) @ लक्ष्य में x का उपयोग कर एक्स x.Col1 = y कोला जब लक्ष्य से टारगेट नहीं मिला तब (कॉल 1) वैल्यू (y.ColA) डाला गया। कॉल 1, वाईओ कोबॉल @ ओटपुट (कॉल 1, कोलब) में; - ^ - y.ColB डाला या हटाए गए आभासी तालिकाओं द्वारा वापस नहीं किया गया है। - डाला और हटाए गए `@ लक्ष्य` सारणी [चर] पर आधारित हैं SELECT * FROM @Output; / * Col1 ColB ----------- ----------- 10 100 20 200 30 300 * /  

No comments:

Post a Comment