एसक्यूएल ट्रिगर अधिक संख्या में कॉलम के साथ डेटा में डेटा कॉपी करने के लिए - एसक्यूएल, एसक्यूएल-सर्वर, ट्रिगर्स

मेरे पास एक टेबल (टेबल ए) है जिसमें लगभग 150 हैकॉलम और मैं तालिका ए में डाले गए किसी भी नए डेटा पर तालिका ए से दूसरे तालिका (तालिका बी) में डेटा कॉपी करना चाहता हूं। तालिका टैब में कुछ अतिरिक्त कॉलम के साथ tableA के समान तालिका संरचना है।

मैं ट्रिगर्स के लिए नया हूं और मैं निम्नलिखित लिंक में एक उदाहरण पढ़ रहा था: https://www.codeproject.com/Articles/25600/Triggers-SQL-Server

चूंकि मेरे पास टेबल ए है जिसमें 150 कॉलम हैं, हैट्रिगर में कॉलम निर्दिष्ट करने के लिए कोई आसान तरीका है, जो कि 150 चर घोषित करता है, डाले गए मान के बराबर 150 चर का चयन करता है, और उसके बाद इसे तालिका बी में डालने का कोई आसान तरीका है। यह ट्रिगर कोड वास्तव में लंबा बनाता है। मैं सोच रहा हूं कि 150 कॉलम निर्दिष्ट करने का कोई आसान तरीका है या नहीं।

धन्यवाद

उत्तर:

जवाब के लिए 0 № 1

एक साधारण प्रति ट्रिगर इस तरह कुछ दिखना चाहिए:

CREATE TRIGGER MyTrigger ON MyTable
FOR INSERT
AS
BEGIN
INSERT INTO MyOtherTable (Column1, Column2, Column3... Column150)
SELECT (Column1, Column2, Column3... Column150)
FROM inserted;
END

150 कॉलम के साथ एक टेबल होने में एक समस्या है औरबिल्कुल अच्छा डिजाइन नहीं है। उस ने कहा, यह आपको सौदा करने के लिए है। आपको प्रत्येक व्यक्ति को INSERT और चयन विवरणों में व्यक्तिगत रूप से सूचीबद्ध करने की आवश्यकता होगी। यह एक बार दर्द होगा, लेकिन यह वास्तव में करने का सबसे अच्छा / एकमात्र तरीका है इस। ऐसा करके, आप सुनिश्चित करते हैं कि सही डेटा दाएं कॉलम में हो, और कुछ भी तोड़ता है जब कॉलम किसी भी तालिका में जोड़े जाते हैं।

कॉलम की सूची बनाने के कठिन भाग में मदद के लिए, आप इस तरह के कुछ एसक्यूएल का उपयोग अपनी सूची बनाने के लिए कर सकते हैं:

DECLARE @sql nvarchar(max);
SET @sql = N"";
SELECT @sql += QUOTENAME(COLUMN_NAME) + N", "
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = "MyTable"
SELECT @sql;

बस तालिका के नाम को प्रतिस्थापित करेंकॉलम का सबसेट जिसे आप "मायटेबल" के लिए प्रतिलिपि बनाना चाहते हैं और आपको अच्छा होना चाहिए। यह निश्चित रूप से, मानता है कि मेल खाने वाले कॉलम दोनों टेबलों में सटीक समान नाम हैं। यदि कोई अंतर है, तो आपको उन लोगों को मैन्युअल रूप से संरेखित करना होगा जिन्हें उचित डेटा प्राप्त करना चाहिए।


संबंधित सवाल
सबसे लोकप्रिय