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

पोस्टग्रेज एफके रेफरेंसिंग कंपोजिट पीके

अपनी वर्तमान संरचना के साथ, आप ऐसा नहीं कर सकते।

एक विदेशी कुंजी संदर्भ का लक्ष्य प्राथमिक कुंजी या अद्वितीय घोषित किया जाना है। तो या तो यह

CREATE TABLE foo (
    id SERIAL PRIMARY KEY,
    foo_created_on ABSTIME,
    foo_deactivated_on ABSTIME,
    UNIQUE (id, foo_created_on)
);

या यह

CREATE TABLE foo (
    id SERIAL,
    foo_created_on ABSTIME,
    foo_deactivated_on ABSTIME,
    PRIMARY KEY (id, foo_created_on),
    UNIQUE (id)
);

bar.foo_id के लिए एक लक्ष्य के रूप में काम करेगा। तब बार का एक साधारण संदर्भ होगा।

CREATE TABLE bar (
    id SERIAL,
    bar_created_on ABSTIME,
    bar_deactivated_on ABSTIME,
    foo_id REFERENCES foo (id),
    PRIMARY KEY (id, bar_created_on)
);

यदि आप मूल रूप से फू में घोषित प्राथमिक कुंजी का संदर्भ देना चाहते हैं, तो आपको उस प्राथमिक कुंजी को बार में स्टोर करना होगा। आपको यह सब स्टोर करना है, इसका हिस्सा नहीं। तो फू को संशोधित किए बिना, आप इस तरह बार बना सकते हैं।

CREATE TABLE bar (
    id SERIAL,
    bar_created_on ABSTIME,
    bar_deactivated_on ABSTIME,
    foo_id INTEGER NOT NULL,
    foo_created_on ABSTIME NOT NULL,
    FOREIGN KEY (foo_id, foo_created_on) REFERENCES foo (id, foo_created_on),
    PRIMARY KEY (id, bar_created_on)
);


  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. PostgreSQL 9.2 . में json फ़ील्ड पर इंडेक्स बनाएं

  3. कैसे Atanh () PostgreSQL में काम करता है

  4. यदि कमांड-लाइन पर निर्दिष्ट नहीं है तो केवल psql-script में वेरिएबल सेट करें

  5. स्प्रिंग डेटा रिटर्निंग लिस्ट<ऑब्जेक्ट[]>