PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

लिखने से पहले किसी अन्य तालिका से मान के साथ फ़ील्ड का मान सीमित करें

आपको 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मान 'जारी रखें' तरल पदार्थ चलाने पर पहलू-मान्य त्रुटि नहीं है

  2. PostgreSQL में रेडियन () फ़ंक्शन कैसे काम करता है

  3. पोस्टग्रेज टेक्स्ट सर्च

  4. पीएल/पायथन और पोस्टग्रेएसक्यूएल:कई कॉलम की तालिका वापस करने का सबसे अच्छा तरीका क्या है?

  5. psql के लिए वैकल्पिक आउटपुट स्वरूप