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

PostgreSQL:न्यूनतम कार्डिनैलिटी कैसे लागू करें?

CHECK बाधा का उपयोग करके इसे निर्दिष्ट करने का कोई तरीका नहीं है, इसलिए मुझे लगता है कि सबसे अच्छा तरीका एक ट्रिगर है:

http://www.postgresql.org/docs/9.1/static /sql-createtrigger.html
http://www.postgresql.org/docs /9.1/static/plpgsql-trigger.html

आप कुछ इस तरह से समाप्त करेंगे (मैंने इसका परीक्षण या कुछ भी नहीं किया है):

CREATE TRIGGER at_least_one before INSERT, UPDATE, DELETE ON the_one_table  FOR EACH ROW EXECUTE PROCEDURE check_at_least_one();

CREATE OR REPLACE FUNCTION check_at_least_one() RETURNS trigger AS $$
    BEGIN
    nmany := select count(*) from the_many_table where the_many_table.the_one_id=NEW.id;   
    IF nmany > 0 THEN 
        RETURN NEW;
    END IF;
    RETURN NULL;
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. PostgreSQL से कोई टेम्पलेट डेटाबेस कैसे छोड़ता है?

  2. रेल में माइग्रेशन में एसक्यूएल कैसे लिखें

  3. अद्यतन करने की आवश्यकता के बिना INSERT से ON CONFLICT के साथ पंक्तियाँ लौटाएँ

  4. पोस्टग्रेज में, मैं एक ही प्रश्न में COUNT और WHERE कैसे करूं, फिर परिणाम पर गणित कैसे करूं?

  5. PostgreSQL के साथ अक्षरांकीय छँटाई