2009-11-22 6 views
13

में सभी उपयोगकर्ता तालिकाओं में एक कॉलम जोड़ना मुझे डेटाबेस में सभी 40 उपयोगकर्ता तालिकाओं में एक डिलीट ध्वज कॉलम जोड़ने की आवश्यकता है। मैं sys.tables के माध्यम से लूप को एक स्क्रिप्ट लिख सकता था, लेकिन मैंने सोचा कि मैं जांच करूँगा और देख सकता हूं कि किसी के पास या तो बेहतर समाधान है, या इस परिदृश्य के लिए पूर्व-निर्मित एसक्यूएल है।टी-एसक्यूएल

exec sp_msforeachtable 'alter table ? add flag bit not null default 0'; 

उत्तर

31

एक गैर-दस्तावेजी लेकिन अच्छी तरह से संगृहीत ज्ञात प्रक्रिया sp_msforeachtable नहीं है।

या आप निश्चित रूप से एक भी एसक्यूएल बयान का निर्माण कर सकता है ...

SELECT 
    'ALTER TABLE ' + T.name + ' ADD foo int NULL' 
FROM 
    sys.tables AS T 
WHERE 
    T.is_ms_shipped = 0 

या गैर-दस्तावेजी

EXEC sys.sp_MSforeachtable 'ALTER TABLE ? ADD foo int NULL' 
+0

+1 लेकिन ... seraphym एक कॉलम निकालने के लिए एक रास्ता के लिए पूछ रहा है । यद्यपि आपका कथन आसानी से ड्रॉप करने के लिए लिखा जा सकता है, फिर भी लक्ष्य कॉलम का नाम सभी तालिकाओं में समान होना चाहिए। –

+3

psasik, seraphym प्रत्येक तालिका में 'हटाएं' नामक कॉलम जोड़ना चाहता है, प्रत्येक तालिका से कॉलम नहीं हटाएं। –

+0

बहुत अच्छा, आपकी मदद के लिए धन्यवाद! – seraphym

11

नहीं, यह एक मैनुअल पाश है:

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