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

विदेशी कुंजी संदर्भात्मक कार्रवाई को कैसे बदलें? (व्यवहार)

<उप>पुराना प्रश्न लेकिन उत्तर जोड़ना ताकि किसी को सहायता मिल सके

इसकी दो चरणों वाली प्रक्रिया:

मान लीजिए, एक table1 एक विदेशी कुंजी है कॉलम नाम के साथ fk_table2_id , बाधा . के साथ नाम fk_name और table2 कुंजी t2 . के साथ संदर्भित तालिका है (मेरे आरेख में नीचे जैसा कुछ )

   table1 [ fk_table2_id ] --> table2 [t2]

पहला कदम , पुराने CONSTRAINT को छोड़ें:(संदर्भ )

ALTER TABLE `table1` 
DROP FOREIGN KEY `fk_name`;  

सूचना प्रतिबंध हटा दिया गया है, स्तंभ हटाया नहीं गया है

दूसरा चरण , नई बाधा जोड़ें:

ALTER TABLE `table1`  
ADD CONSTRAINT `fk_name` 
    FOREIGN KEY (`fk_table2_id`) REFERENCES `table2` (`t2`) ON DELETE CASCADE;  

बाधा जोड़ना, कॉलम पहले से मौजूद है

उदाहरण:

मेरे पास एक UserDetails है तालिका Users . को संदर्भित करती है टेबल:

mysql> SHOW CREATE TABLE UserDetails;
:
:
 `User_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`Detail_id`),
  KEY `FK_User_id` (`User_id`),
  CONSTRAINT `FK_User_id` FOREIGN KEY (`User_id`) REFERENCES `Users` (`User_id`)
:
:

पहला चरण:

mysql> ALTER TABLE `UserDetails` DROP FOREIGN KEY `FK_User_id`;
Query OK, 1 row affected (0.07 sec)  

दूसरा चरण:

mysql> ALTER TABLE `UserDetails` ADD CONSTRAINT `FK_User_id` 
    -> FOREIGN KEY (`User_id`) REFERENCES `Users` (`User_id`) ON DELETE CASCADE;
Query OK, 1 row affected (0.02 sec)  

परिणाम:

mysql> SHOW CREATE TABLE UserDetails;
:
:
`User_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`Detail_id`),
  KEY `FK_User_id` (`User_id`),
  CONSTRAINT `FK_User_id` FOREIGN KEY (`User_id`) REFERENCES 
                                       `Users` (`User_id`) ON DELETE CASCADE
:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि:तालिका '<तालिका-नाम>' के लिए उपयोगकर्ता '<userid>'@'<ip-address>' को कमांड अस्वीकृत का चयन करें

  2. MySQL - स्ट्रिंग लंबाई के आधार पर डेटा का चयन कैसे करें

  3. MySQL JDBC ड्राइवर कनेक्शन स्ट्रिंग क्या है?

  4. MySQL में, क्या मैं प्रतिबद्ध होने तक संदर्भित अखंडता जांच को स्थगित कर सकता हूं

  5. अपरिभाषित फ़ंक्शन mysql_connect ()