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

Oracle में विदेशी कुंजी निर्माण मुद्दा

जब आप FK जोड़ते हैं, तो आप बच्चे के रूप में . एक कॉलम लिंक कर रहे होते हैं आपके द्वारा बनाई जा रही तालिका से उसके पैरेंट . तक मूल तालिका से। इसलिए, आपको चाइल्ड कॉलम का नाम, साथ ही पैरेंट कॉलम का नाम देना होगा।

सामान्य सिंटैक्स है

CREATE TABLE table_name
(
  column1 datatype null/not null,
  column2 datatype null/not null,
  ...

  CONSTRAINT fk_column
    FOREIGN KEY (column1, column2, ... column_n)
    REFERENCES parent_table (column1, column2, ... column_n)
);

ध्यान दें कि FOREIGN KEY . के बीच के कॉलम कोष्ठक, उस तालिका से हैं जिसे आप बना रहे हैं, जबकि कॉलम बीच में हैं REFERENCES PARENT_TABLE मूल तालिका से हैं।

आपके पास CollectibleNum . नामक स्तंभ नहीं है आपकेDiecastItems . में . इसलिए, इस तरह के कॉलम को जोड़कर निम्नलिखित ठीक काम करता है:

CREATE TABLE collectibles 
  ( 
     collectiblenum NUMBER(10) NOT NULL, 
     CONSTRAINT collectibles_pk PRIMARY KEY(collectiblenum) 
  ); 

CREATE TABLE diecastitems 
  ( 
     diecastname    VARCHAR2(45) NOT NULL, 
     diecastcopy    NUMBER(2) NOT NULL, 
     diecastscale   VARCHAR2(25), 
     colorscheme    VARCHAR2(25), 
     diecastyear    NUMBER(4), 
     collectiblenum NUMBER(10),   --added column
     CONSTRAINT diecastitem_pk PRIMARY KEY(diecastname, diecastcopy), 
     CONSTRAINT diecastitem_collectible_fk FOREIGN KEY(collectiblenum) 
     REFERENCES collectibles(collectiblenum) 
  ); 

फिडल




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle संग्रहित प्रक्रियाओं के साथ डैपर का उपयोग करना जो कर्सर लौटाते हैं

  2. SQL में हमेशा दशमलव स्थान दिखाएं?

  3. Oracle SQL PIVOT तालिका

  4. Oracle SQL मनमाने ढंग से पंक्तियों को लौटाता है जब क्लॉज द्वारा कोई ऑर्डर नहीं किया जाता है

  5. लंबे समय से चल रहे डेटाबेस ऑपरेशन को कैसे रद्द करें?