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

MySQL फॉरेन की ON DELETE CASCADE 3 टेबल्स पर

ON DELETE CASCADE विकल्प होना पर्याप्त है। इस उदाहरण पर एक नज़र डालें:

टेबल बनाएं और भरें:

CREATE TABLE molecule (
  id INT(11) NOT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB;

CREATE TABLE descriptor (
  id INT(11) NOT NULL,
  molecule_id INT(11) DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT FK_descriptor_molecule_id FOREIGN KEY (molecule_id)
    REFERENCES molecule(id) ON DELETE CASCADE ON UPDATE RESTRICT
)
ENGINE = INNODB;

CREATE TABLE tdepdescriptor (
  id INT(11) NOT NULL,
  descriptor_id INT(11) DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT FK_tdepdescriptor_descriptor_id FOREIGN KEY (descriptor_id)
    REFERENCES descriptor(id) ON DELETE CASCADE ON UPDATE RESTRICT
)
ENGINE = INNODB;

INSERT INTO molecule VALUES 
  (1),
  (2),
  (3);

INSERT INTO descriptor VALUES 
  (1, 1),
  (2, 1),
  (3, 2);

INSERT INTO tdepdescriptor VALUES 
  (1, 1),
  (2, 2),
  (3, 3);

एक अणु और उसके सभी विवरणक और उसके सभी tdepdescriptor को हटा दें:

DELETE FROM molecule WHERE id = 1;

SELECT * FROM molecule;
+----+
| id |
+----+
|  2 |
|  3 |
+----+

SELECT * FROM descriptor;
+----+-------------+
| id | molecule_id |
+----+-------------+
|  3 |           2 |
+----+-------------+

SELECT * FROM tdepdescriptor;
+----+---------------+
| id | descriptor_id |
+----+---------------+
|  3 |             3 |
+----+---------------+


  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 IN क्लॉज का उपयोग कैसे करते हैं?

  3. डेटाबेस से अल्पविराम से अलग किए गए मान कैसे प्राप्त करें

  4. एसक्यूएल जॉइन में डुप्लिकेट रिकॉर्ड

  5. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:mysql में