इनलाइन वर्णित होने पर विदेशी कुंजी बाधा का कोई प्रभाव नहीं पड़ता - mysql, sql, mysql-workbench

मेरे पास एक साधारण स्कीमा है:

CREATE TABLE technologies (
technologyName VARCHAR(50) NOT NULL PRIMARY KEY
);

CREATE TABLE technologySynonyms (
synonymId              INT PRIMARY KEY AUTO_INCREMENT,
sourceTechnologyName VARCHAR(50) UNIQUE,
targetTechnologyName VARCHAR(50),
FOREIGN KEY (targetTechnologyName)
REFERENCES technologies(technologyName)
);

मैंने सरल बनाना सोचा technologySynonyms टेबल परिभाषा आगे की तरह:

CREATE TABLE technologySynonyms (
synonymId              INT PRIMARY KEY AUTO_INCREMENT,
sourceTechnologyName VARCHAR(50) UNIQUE,
targetTechnologyName VARCHAR(50) REFERENCES technologies(technologyName)
);

मुझे कोई त्रुटि नहीं मिलती है - क्वेरी ठीक से निष्पादित होती है और तालिका बनाई जाती है, लेकिन जब मैं एक रिकॉर्ड डालता हूं जो विदेशी कुंजी बाधा को मान्य करता है:

INSSERT INTO technologySynonyms (sourceTechnologyName, targetTechnologyName)
VALUES ("JS", "Value not present in technologies table!!");

रिकॉर्ड डाला गया है।

यह मुझे कुछ प्रश्नों के साथ छोड़ देता है:

  1. मेरे एसक्यूएल में क्या गलत है? क्या यह काम नहीं करना चाहिए?
  2. क्या मैं MySQL वर्कबेंच को अधिक सख्त बना सकता हूं? अगर क्वेरी तुरंत अस्वीकार कर दी गई तो मैं इसे पसंद करता।

उत्तर:

जवाब के लिए 2 № 1

यह मानक व्यवहार है, महत्वपूर्ण खंड पढ़ें

इसके अलावा, MySQL पार्स करता है लेकिन "इनलाइन को अनदेखा करता हैसंदर्भ विनिर्देश "(के रूप में SQL मानक में परिभाषित) जहां संदर्भ भाग के रूप में परिभाषित किए गए हैं स्तंभ विनिर्देश के। MySQL एक अलग FOREIGN कुंजी विनिर्देशन के भाग के रूप में निर्दिष्ट होने पर केवल संदर्भ खंड को स्वीकार करता है


संबंधित सवाल
सबसे लोकप्रिय