यदि यह ऐसा कुछ है जिसे आप नियमित रूप से करने की योजना बना रहे हैं (यानी यह एप्लिकेशन लॉजिक का हिस्सा है और डेटा-ऑफ नहीं है) तो आप INSTEAD OF INSERT
डेटा को विभाजित करने के प्रबंधन के लिए एक ट्रिगर के साथ Table1 और Table2 पर एक दृश्य का उपयोग कर सकते हैं (और व्यवस्था कर रहे हैं) चाबियाँ / रिश्ते) - तब आप बस करेंगे:
INSERT newView SELECT NEWID(), A, B, C, D, E, F FROM MyTable
और ट्रिगर जितना आसान हो सकता है:
CREATE trg_newview_insert TRIGGER newView INSTEAD OF UPDATE AS
INSERT table1 SELECT ID, A, B, C FROM inserted
INSERT table2 SELECT ID, D, E, F FROM inserted
GO
दृश्य कुछ इस तरह है:
CREATE VIEW newView AS
SELECT table1.ID, A, B, C, D, E, F
FROM table1
JOIN table2 ON table1.ID = table2.ID;
या यदि प्रत्येक तालिका में पंक्तियों के मिलान के बिना पंक्तियाँ हो सकती हैं:
CREATE VIEW newView AS
SELECT ISNULL(table1.ID, table2.ID), A, B, C, D, E, F
FROM table1
FULL OUTER JOIN table2 ON table1.ID = table2.ID;
(निश्चित रूप SELECT
से जब आप दृश्य से पंक्तियाँ आउटपुट करते हैं तो महत्वहीन होता है, यदि आप SELECT
इसे करने का इरादा नहीं रखते हैं और यह केवल INSERT
अपने जादू करने के लिए ट्रिगर के लिए एक टेम्पलेट प्रदान करने के लिए मौजूद है )
यह मानकर चल रहा है कि आप इस मामले में अपनी प्राथमिक कुंजी के लिए एक UUID प्रकार का उपयोग करने का इरादा कर रहे हैं - यदि आप तालिका 1 पर स्वचालित रूप से वृद्धि पूर्णांक कुंजी का उपयोग कर रहे हैं तो करने के लिए थोड़ा और काम करना है। निम्नलिखित की तरह कुछ काम कर सकते हैं:
CREATE trg_newview_insert TRIGGER newView INSTEAD OF UPDATE AS
INSERT table1 (A, B, C)
SELECT A, B, C
FROM inserted;
INSERT table2 (ID, D, E, F)
SELECT ID, D, E, F
FROM table1 AS t
JOIN inserted AS i ON t.A = i.A AND t.B = i.B AND t.C = i.C;
GO
और तथ्य यह है कि की जोड़ी में INSERT
बयान एक बंद इसलिए की तरह के रूप में सीधे काम हो सकता है (चाहे आप एक प्रयोग कर रहे हैं INT IDENTITY
या UNIQUEIDENTIFIER DEFAULT NEWID()
कुंजी के लिए टाइप करें):
INSERT table1 (A, B, C)
SELECT A, B, C
FROM MyTable;
INSERT table2 (ID, D, E, F)
SELECT ID, D, E, F
FROM table1 AS t
JOIN MyTable AS i ON t.A = i.A AND t.B = i.B AND t.C = i.C;
देखने और ट्रिगर की आवश्यकता को पूरी तरह से नकारना, हालांकि अगर यह एक ऑपरेशन है तो आप अक्सर अपने कोड में प्रदर्शन कर रहे होंगे तो व्यू + ट्रिगर अभी भी हर बार कई बयानों की आवश्यकता को ध्यान में रखते हुए लायक होगा।
गुफा: उपरोक्त सभी एसक्यूएल को विचार से टाइप किया गया है और परीक्षण नहीं किया गया है, इससे पहले कि यह कोई भी गारंटी है कि इसे आपकी आवश्यकता के अनुसार काम करेगा।