SQL Server update trigger executing twice -
मेरे पास निम्न ट्रिगर हैं -
USE [DatabaseA] जाओ / **** ** ऑब्जेक्ट: ट्रिगर [डीबीओ]। [T_TableA_U] स्क्रिप्ट दिनांक: 02/17/2014 18:08:44 ****** / SET एएनएसआई_एनएलएलएस जाओ जाओ ट्यूटोरियल जाओ [डीबीओ] पर [सेट करें] पर [T_TableA_U]। [डीबीओ]। [टेबल ए] अद्यतन के बाद DECLARE @HistoryType char (1) पर सेट करें - "I" = डालें, "यू" = अपडेट, "डी" = DECLARE @RevisionID INT SET @HistoryType = 'U' SET @RevisionID = 0 [B] [तालिका] (स्तंभ 1_रेवटीएम, स्तंभ 2_आरवटाइप, स्तंभ 3_id, स्तंभ 4_रेविड, स्तंभ 5_प्रकार, ....) का चयन करें (), @ हिस्ट्रीटाइप, a.column1_id, @RevisionID, एक .column2, .... से तालिका ए में एक भीतरी सम्मिलित किया गया i.column1_id = i.column1_id
पर अगर मैं मैन्युअल रूप से स्रोत में एक पंक्ति अपडेट करता हूं तो DESTINATION में 1 नई पंक्ति बनाता है । यह अच्छा है।
जब मैं तीसरे पक्ष के अनुप्रयोग का उपयोग करता हूं तब भी मैं इस ट्रिगर का निर्माण कर रहा हूं, यह DESTINATION में डुप्लिकेट पंक्तियाँ पैदा कर रहा है। सभी डेटा बिल्कुल वही है जो GETDATE () के अलावा होता है जो मुझे बताता है कि यह किसी नतीजे का अनुकरण कर रहा है जो कि अनुप्रयोग को मजबूर कर रहा है।
तो मैं इसे कैसे प्राप्त करूं? INSERT या तो इस ट्रिगर में होने से पहले किसी अंतर को नियंत्रित करने का एक तरीका है या क्या मैं DESTINATION तालिका पर एक और ट्रिगर बना सकता हूं जो कहता है कि पंक्ति एक डुप्लिकेट है, तो उनमें से केवल INSERT 1?
मुझे इस समस्या को विरासत एप्लिकेशन को डिज़ाइन किया गया है। जिस टेबल पर मैंने ट्रिगर किया था, उस पर एक पीके / एफके मिलान दूसरे टेबल से मिला था। मैंने एफके के साथ तालिका को चलाने के लिए ट्रिगर को उलट दिया और यह कोई डुप्लिकेट के साथ 1 से 1 आधार पर काम करता है, ऐसा लगता है कि विरासत एप्लिकेशन दोनों तालिकाओं को अद्यतन करता है, भले ही केवल 1 तालिका अपडेट हो।
Comments
Post a Comment