के बिना एक आउटपुट खंड है जिसमें मेरे पास एक ट्रिगर है जो एक ही सम्मिलित रिकॉर्ड की पहचान प्राथमिक कुंजी (MessageId) के मान के साथ सम्मिलित फ़ील्ड (रूटआईडी) में से एक अपडेट करता है। अद्यतन केवल होना चाहिए जब डाला रिकॉर्ड की RootId क्षेत्र 0. ट्रिगर इस तरह दिखता है:कथन में खंड त्रुटि
ALTER TRIGGER [dbo].[Trigger_RootIdUpdate]
ON [dbo].[Messages]
AFTER INSERT
AS BEGIN
SET NOCOUNT ON;
DECLARE @MessageId Int
SELECT @MessageId = I.MessageId
FROM INSERTED I
UPDATE Messages
SET RootId = @MessageId
WHERE MessageId = @MessageId AND MessageId = 0
END
मैं Azure में इसका इस्तेमाल करते हैं और जब मैं एक पंक्ति सम्मिलित, यह मेरे निम्न त्रुटि देता है:
The target table 'dbo.Messagess' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause.
एक ही ट्रिगर मेरे असली एमएस एसक्यूएल 2012 पर काम करता है। मुझे लगता है कि सेटिंग्स में कोई अंतर है लेकिन मुझे यह नहीं पता कि वह मुझे क्या बताने की कोशिश करता है।
क्या मैं कुछ ओवरकप्लिकेट कर रहा हूं? धन्यवाद!
कृपया उस विवरण को दिखाएं जिसमें 'आउटपुट' खंड शामिल है। मैंने SQL सर्वर 2008 से पहले उस त्रुटि को देखा है और तालिका चर से चयन करने के बाद 'आउटपुट INTO @ tablevar' का सहारा लेना था। –
मैं इस त्रुटि के कारण रक्षात्मक उद्देश्यों के लिए 2008 R2 में 'OUTPUT INTO @ tablevar' का उपयोग भी करता हूं (साथ ही कोई व्यक्ति ट्रिगर बनाता है)। मैं केवल प्राथमिक कुंजी को आउट करता हूं, और फिर चयन करते समय @tablevar पर शामिल होता हूं क्योंकि यह सभी डेटाटाइप, आईआईआरसी के साथ काम नहीं करता है। –
त्रुटि Azure/Silverlight तालिका संपादक द्वारा उत्पन्न की गई है। मुझे लगता है कि जब मैं वहां एक पंक्ति संपादित करता हूं, तो Azure एक टी-एसक्यूएल कथन उत्पन्न करता है, जिसमें बिना इनपुट के आउटपुट शामिल होता है। एक पंक्ति काम अद्यतन करने के लिए सी #/LINQ कोड का उपयोग करना। –