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

डिलीट और अपडेट पर INNODB कैस्केड

ऐसा लगता है कि आप बस थोड़ा सा मार्गदर्शन चाहते हैं। इसलिए मैं संक्षिप्त होने की कोशिश करूंगा।

$sql = "CREATE TABLE customerGroups (
   customer_id int(11) NOT NULL,
   group_id int(11) NOT NULL,
   PRIMARY KEY (customer_id, group_id),
   CONSTRAINT customers_customergroups_fk
     FOREIGN KEY (customer_id)
     REFERENCES customers (customer_id) 
     ON DELETE CASCADE,
   CONSTRAINT groups_customergroups_fk
     FOREIGN KEY (group_id)
     REFERENCES groups (group_id) 
     ON DELETE CASCADE
)ENGINE = INNODB;";

आपको केवल जरूरत आईडी नंबर जब पहचान को कम करना मुश्किल होता है। जब आप लोगों के साथ व्यवहार कर रहे होते हैं, तो पहचान को कम करना मुश्किल होता है। "जॉन स्मिथ" नाम के बहुत से लोग हैं।

लेकिन आप दो चीजों से निपट रहे हैं जिन्हें पहले ही पहचाना जा चुका है। (और सभी चीजों के आईडी नंबरों से पहचाना जाता है।)

कैस्केडिंग डिलीट समझ में आता है। आईडी नंबरों पर अपडेट को कैस्केड करना अपेक्षाकृत दुर्लभ है; माना जाता है कि वे कभी नहीं बदलते। (मुख्य कारण Oracle DBA इस बात पर जोर देते हैं कि प्राथमिक कुंजी हमेशा होनी चाहिए आईडी नंबर हो, और यह कि उन्हें कभी नहीं होना चाहिए परिवर्तन इसलिए है क्योंकि Oracle नहीं कैस्केड अपडेट।) यदि, बाद में, कुछ आईडी नंबर जरूरत किसी भी कारण से बदलने के लिए, आप ON UPDATE CASCADE को शामिल करने के लिए तालिका को बदल सकते हैं।

$sql = "CREATE TABLE groups
(
group_id int(11) NOT NULL AUTO_INCREMENT,
group_title varchar(50) NOT NULL UNIQUE,
group_desc varchar(140),
PRIMARY KEY (group_id)
)ENGINE = INNODB;";

Group_title पर अतिरिक्त अनन्य बाधा पर ध्यान दें। आप अपने डेटाबेस में ऐसा कुछ भी (नीचे) की अनुमति नहीं देना चाहते हैं।

group_id  group_title
--
1         First group
2         First group
3         First group
...
9384      First group

आप इस प्रकार के परिवर्तनों को अपनी सभी तालिकाओं में ले जाना चाहेंगे। (शायद, आपके ग्राहकों की तालिका को छोड़कर।)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टॉमकैट की संदर्भ एक्सएमएल फ़ाइल में मूल्यों को गतिशील रूप से कैसे लोड करें?

  2. MySQL:ALTER IGNORE TABLE ADD UNIQUE, क्या छोटा किया जाएगा?

  3. अप्रारंभीकृत स्थिर MysqlCompat::MysqlRes (mms2r रत्न का उपयोग करके)

  4. मैं डोकर में mysql-क्लाइंट शुरू करने की कोशिश कर रहा हूँ, लेकिन मैं उपयोगकर्ता त्रुटि के लिए पहुँच अस्वीकृत हो जाता है

  5. जेडीबीसी ड्राइवर क्लासपाथ कैसे सेट करें