की संख्या अद्यतन करने के लिए इस समझने में अधिक आसान बनाने के लिए, मैं ठीक उसी समस्या पेश करेंगे जैसे कि यह (वास्तविक एप्लिकेशन पर मंचों से कोई लेना देना नहीं है एक मंच के बारे में था सब, लेकिन मुझे लगता है कि हम में से अधिकांश को समझना आसान है, वास्तविक ऐप कुछ विशिष्ट है कि अधिकांश प्रोग्रामर समझ नहीं पाएंगे (यह कट्टर ग्राफिक डिजाइनरों के लिए एक ऐप है))।एमएस एसक्यूएल सर्वर ट्रिगर आइटम रेटिंग और वोट
मान लीजिए कि एक थ्रेड टेबल है जो प्रत्येक फोरम थ्रेड और थ्रेड्रेटिंग टेबल के बारे में जानकारी संग्रहीत करती है जो प्रति उपयोगकर्ता थ्रेड रेटिंग (1-5) स्टोर करती है। दक्षता के लिए मैंने थ्रेड टेबल में रेटिंग औसत और वोटों की संख्या को कैश करने का निर्णय लिया और इसे अपडेट करने के लिए एक अच्छा विचार की तरह ट्रिगर्स (मैं वास्तविक एप्लिकेशन कोड में ऐसी चीजें करता था, लेकिन मुझे लगता है कि ट्रिगर एक कोशिश के लायक हैं, बावजूद डिबगिंग खतरे)।
कि आप जानते हैं, एमएस एसक्यूएल सर्वर एक ट्रिगर का समर्थन नहीं करता प्रति पंक्ति निष्पादित किया जाना है, यह बयान प्रति हो गया है। इसलिए मैं इसे इस तरह परिभाषित करने की कोशिश की:
CREATE TRIGGER thread_rating ON threadrating
AFTER INSERT
AS
UPDATE thread
SET
thread.rating = (thread.rating * thread.voters + SUM(inserted.rating))/(thread.voters + COUNT(inserted.rating)),
thread.voters = thread.voters + COUNT(inserted.rating)
FROM thread
INNER JOIN inserted ON(inserted.threadid = thread.threadid)
GROUP BY inserted.threadid
लेकिन मैं "द्वारा समूह" खंड के लिए कोई त्रुटि मिलती है (जो मैं उम्मीद)। सवाल यह है कि, मैं यह काम कैसे कर सकता हूं?
क्षमा सवाल बेवकूफ है, लेकिन यह पहली बार मैं वास्तव में चलाता उपयोग करने का प्रयास हो चुका है।
अतिरिक्त जानकारी: थ्रेड तालिका में थ्रेडिड (int, प्राथमिक कुंजी), रेटिंग (फ्लोट), मतदाता (int) और कुछ अन्य फ़ील्ड होंगे जो वर्तमान प्रश्न के लिए अपरिवर्तनीय हैं। थ्रेड्रेटिंग तालिका में केवल थ्रेडिड (विदेशी कुंजी), उपयोगकर्ता आईडी (उपयोगकर्ता तालिका की प्राथमिक कुंजी के लिए विदेशी कुंजी) और रेटिंग (1 और 5 के बीच टिनिंट) शामिल है।
त्रुटि संदेश "कीवर्ड 'ग्रुप' के पास गलत वाक्य रचना है।"
मेज पर प्राथमिक कुंजी क्या है
यहाँ अपने समस्या का समाधान है? –
तालिका पोस्ट करना डीएमएल और वास्तविक त्रुटि संदेश भी मदद करेगा। –