आपको UPDATE
की आवश्यकता नहीं है एक ट्रिगर के अंदर। आप NEW.votes_used
. को मान निर्दिष्ट कर सकते हैं
कुछ इस तरह का प्रयोग करें:
BEGIN
IF (NEW.votes_used > (SELECT votes_available FROM vote_totals
WHERE vote_totals.user_id = NEW.user_id)) THEN
NEW.votes_used := (SELECT votes_available FROM vote_totals
WHERE vote_totals.userID = NEW.user_id);
END IF;
RETURN NEW;
END;
या
BEGIN
NEW.votes_used := LEAST(NEW.votes_used, (SELECT votes_available
FROM vote_totals
WHERE vote_totals.userID = NEW.user_id));
RETURN NEW;
END;
यह एक BEFORE UPDATE
होना चाहिए काम करने के लिए ट्रिगर। (और जैसा कि BEFORE UPDATE
ट्रिगर करता है इसे RETURN NEW
)।
यदि आप ट्रिगर के साथ चेक बाधा का अनुकरण करना चाहते हैं - कुछ ऐसा प्रयास करें:
BEGIN
IF (NEW.votes_used > (SELECT votes_available
FROM vote_totals
WHERE vote_totals.user_id = NEW.user_id))
THEN RAISE EXCEPTION 'Not enough votes';
END IF;
RETURN NEW;
END;