2012-01-16 10 views
5

मैं ON DELETE SET DEFAULT के साथ विदेशी कुंजी नहीं बना सकते DELETE, लेकिन अगर मैं ON DELETE CASCADE का उपयोग तो सब यहाँ काम करता है मेरी एसक्यूएल हैपर साथ विदेशी कुंजी नहीं बना सकता सामान्य सेट करें

CREATE TABLE person( 
    customer_id INT AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(100) UNIQUE 
); 


CREATE TABLE habits( 
    customer_id INT AUTO_INCREMENT PRIMARY KEY, 
    habit VARCHAR(100) UNIQUE 
); 

INSERT INTO `test`.`habits` (`customer_id`, `habit`) VALUES (NULL, 'smoking'), (NULL, 'drinking'); 
INSERT INTO `test`.`person` (`customer_id`, `name`) VALUES (NULL, 'John'), (NULL, 'Steve'); 

CREATE TABLE foreigner( 
    customer_id INT AUTO_INCREMENT PRIMARY KEY, 
    customer VARCHAR(100) DEFAULT 'John', 
    habbit VARCHAR(100) DEFAULT 'smoking', 
    FOREIGN KEY (customer) REFERENCES person(name) ON DELETE SET DEFAULT ON UPDATE CASCADE, 
    FOREIGN KEY (habbit) REFERENCES habits(habit) ON DELETE SET DEFAULT ON UPDATE CASCADE  
); 

यह अजीब है कि यह काम करता है अगर मैं ON DELETE CASCADE का उपयोग करें .... कोई विचार?

+0

तो, 'विदेशी' तालिका (कैस्केडिंग प्रभावों के कारण) से 5 (या किसी भी olther संख्या) पंक्तियों को हटाने के बजाय, आप पांच (लगभग) समान पंक्तियों के साथ समाप्त करना चाहते हैं '(ग्राहक, खरगोश) = ('जॉन,' धूम्रपान ') '। तुम ऐसा क्यों चाहेगो? –

+0

और मैं 3 बेकार 'ग्राहक_आईडी' कॉलम का उल्लेख करने का विरोध नहीं कर सका। –

+0

उन मानों के साथ तालिका केवल एक उदाहरण है - हकीकत में मेरे पास मूल्यों और पंक्तियों के साथ बहुत बड़ी सारणीयां हैं जो उपयोगी भी हो सकती हैं :) – fjckls

उत्तर

3

MySQL Reference Manual से ...

सामान्य सेट करें: इस क्रिया पार्सर द्वारा मान्यता प्राप्त है, लेकिन InnoDB को खारिज कर दिया तालिका सेट हटाना डिफ़ॉल्ट पर या अद्यतन सामान्य सेट करें खंड युक्त परिभाषाएँ।

आप सेट न्यूल का प्रयास कर सकते हैं, लेकिन मुझे यकीन नहीं है कि इससे आपको अन्य समस्याएं मिलेंगी।

+1

धन्यवाद मैंने पूरी तरह से सेट सेट करने की कोशिश की और यह काम किया। मुझे लगता है कि इसके साथ रहना होगा .. अगर इनो डीबी डिलीट सेट डिफॉल्ट पर समर्थन नहीं करता है, तो कौन सा इंजन इसे विदेशी कुंजी के साथ विदेशी अपडेट के साथ समर्थन करेगा? – fjckls

संबंधित मुद्दे