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

SQL तालिका नहीं बना सकता (त्रुटि:150)

आपको पूर्ण . के संदर्भ में एक विदेशी कुंजी बाधा बनानी चाहिए प्रत्येक संदर्भित तालिका की प्राथमिक या अद्वितीय कुंजी। आप संदर्भ तालिका की प्राथमिक कुंजी के बीच में अलग-अलग स्तंभों के लिए अलग-अलग विदेशी कुंजियाँ नहीं बना सकते।

CREATE TABLE prospect
(Custname      VARCHAR(25) NOT NULL,
 Carmake       VARCHAR(25) NOT NULL,
 Carmodel      VARCHAR(20) NOT NULL,
 Caryear       VARCHAR(4) NOT NULL,
 Carextcolour  VARCHAR(10) NOT NULL,
 Cartrim       VARCHAR(10) NOT NULL,
 Optioncode    CHAR(4),
 CONSTRAINT pkprospect PRIMARY KEY (Custname, Carmake, Carmodel, Caryear, Carextcolour,           Cartrim, Optioncode),
 CONSTRAINT fkprospect FOREIGN KEY (Custname) REFERENCES customer(Custname),
 CONSTRAINT fk2prospect FOREIGN KEY (Carmake, Carmodel, Caryear, Carextcolour, Cartrim)
   REFERENCES car(Carmake, Carmodel, Caryear, Carextcolour, Cartrim),
 CONSTRAINT fk7prospect FOREIGN KEY (Optioncode) REFERENCES optiontable(Optioncode)
);

मैंने चाहिए . शब्द का इस्तेमाल किया है ऊपर क्योंकि InnoDB वास्तव में ANSI/ISO SQL मानक की तुलना में थोड़ा अधिक उदार है जब यह विदेशी कुंजी की बात आती है। मानक एसक्यूएल कहता है कि विदेशी कुंजी के कॉलम जरूरी संदर्भित प्राथमिक या अद्वितीय कुंजी के स्तंभों की पूरी सूची हो।

InnoDB आपको कॉलम के सबसेट का उपयोग करने की अनुमति देता है, जब तक कि वे उन कॉलम के बाएं-उपसर्ग हैं। लेकिन आपको ऐसा नहीं करना चाहिए, क्योंकि जब कोई चाइल्ड पंक्ति एकाधिक का संदर्भ दे सकती है तो आपको वास्तव में भ्रमित करने वाले परिणाम मिलते हैं इसकी मूल तालिका में पंक्तियाँ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TIMESTAMPADD () उदाहरण – MySQL

  2. एक ही टेबल में एकाधिक विकल्प कैसे स्टोर करें?

  3. mysql में अपलोड होने पर एक्सेल से तारीख बदल जाती है

  4. आंतरिक एक ही तालिका में शामिल हों

  5. WAMP वर्चुअल होस्ट काम नहीं कर रहा है