2009-02-04 14 views
33

मेरे पास घटकों का डेटाबेस है। प्रत्येक घटक एक विशिष्ट प्रकार का है। इसका मतलब है कि एक घटक और एक प्रकार के बीच एक से अधिक संबंध हैं। जब मैं एक प्रकार को हटाता हूं, तो मैं उन सभी घटकों को हटाना चाहता हूं जिनमें उस प्रकार की विदेशी कुंजी है। लेकिन अगर मुझे गलत नहीं लगता है, तो कैस्केड डिलीट घटक हटा दिए जाने पर टाइप को हटा देगा। क्या मैंने वर्णन करने का कोई तरीका है?mysql में डिलीट कैस्केड पर मैं कैसे उपयोग करूं?

उत्तर

53

यहां आप अपने घटकों की तालिका में शामिल करना चाहते हैं।

CREATE TABLE `components` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `typeId` int(10) unsigned NOT NULL, 
    `moreInfo` VARCHAR(32), 
    -- etc 
    PRIMARY KEY (`id`), 
    KEY `type` (`typeId`) 
    CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`) 
     REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
) 

बस याद रखें कि आप InnoDB स्तोरागे engine उपयोग करने की आवश्यकता: डिफ़ॉल्ट MyISAM भंडारण इंजन विदेशी कुंजी का समर्थन नहीं करता।

+5

एनबी, पर अद्यतन CASCADE शायद एक बुरा विचार है, तो है आप इसे प्राथमिक कुंजी से जोड़ने के लिए उपयोग कर रहे हैं क्योंकि यह अपरिवर्तनीय होना चाहिए और इस सुझाव पर निर्भर होना चाहिए कि डेटाबेस को फिर से डिजाइन की आवश्यकता हो सकती है, लेकिन मुझे लगता है कि यदि आप इसे एक विदेशी कुंजी से जोड़ रहे हैं जो अद्वितीय है लेकिन प्राथमिक नहीं है तो यह ठीक है। – ThinkBonobo

1

आपको अपनी विदेशी कुंजी बाधाओं को डिलीट कैस्केड के रूप में परिभाषित करना होगा।

नोट: आपको इनो डीबी स्टोरेज इंजन का उपयोग करने की आवश्यकता है, वह डिफ़ॉल्ट माइस्सम स्टोरेज इंजन विदेशी कुंजी संबंधों का समर्थन नहीं करता है।

CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment, 
`name` int(11) NOT NULL, 

PRIMARY KEY (`id`), 
KEY `ids` (`ids`) 
CONSTRAINT `foreign` FOREIGN KEY (`ids`) 
    REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE 
) 
1

उपयोग इस एसक्यूएल

T1, T2 DELETE टी 1 भीतर से पर T1.key = T2.key टी 2 शामिल हों जहां हालत

+0

यह op द्वारा पूछे गए 'CASCADE' कार्यक्षमता का उपयोग नहीं करता है। – displayname

+4

लेकिन यह मौजूदा डेटाबेस संरचना को अद्यतन किए बिना समस्या को हल करता है। –

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