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

PostgreSQL में संदर्भित तालिका पर एक बाधा के साथ एक विदेशी कुंजी कैसे बनाएं

आप इसके लिए एक CHECK बाधा का उपयोग कर सकते हैं। आप एक जांच बाधा में कोई प्रश्न नहीं डाल सकते हैं लेकिन आप एक फ़ंक्शन को कॉल कर सकते हैं; इसलिए, हम एक साधारण फ़ंक्शन बनाते हैं जो हमें बताता है कि क्या कोई pluginid . है एक मैट्रिक्स है:

create or replace function is_matrix(int) returns boolean as $$
    select exists (
        select 1
        from plugins
        where id   = $1
          and type = 'matrix'
    );
$$ language sql;

और इसे एक CHECK बाधा में लपेटें:

alter table matrix_params add constraint chk_is_matrix check (is_matrix(pluginid));

फिर:

=> insert into matrix_params values (1,1);
=> insert into matrix_params values (2,3);
ERROR:  new row for relation "matrix_params" violates check constraint "chk_is_matrix"

और FK संदर्भात्मक अखंडता और कैस्केड का ख्याल रखता है।



  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. पोस्टग्रेज नहीं सरणी में

  3. Postgres एक अनुक्रमिक स्कैन क्यों करता है जहाँ सूचकांक <1% डेटा लौटाएगा?

  4. postgresql .ADO.net इकाई डेटा मॉडल उत्पन्न करते समय डेटा स्रोत में प्रकट नहीं होता है

  5. TextField पर URLField का उपयोग करने के लाभ?