Si vous utilisez InnoDB, vous devez rechercher dans Foreign Key Constraints qui prend soin de cela pour vous en utilisant l'option ON DELETE CASCADE
lorsque vous définissez vos relations de clé étrangère.
Un exemple de la documentation:
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE) ENGINE=INNODB;
Avec cela en place, si vous deviez faire ajouter un parent et une rangée d'enfants correspondant à ceci:
INSERT INTO parent (id) VALUES (1);
INSERT INTO child (id, parent_id) VALUES (1,1);
Et puis retiré le parent comme ceci:
DELETE FROM parent WHERE id = 1;
Vous trouverez l'enregistrement enfant correspondant à être parti. C'est, à mon avis, la meilleure façon de le faire.
EDIT: Pour le faire dans une table, vous feriez quelque chose comme ceci:
CREATE TABLE parent (
id INT NOT NULL,
name varchar(250) not null,
parent_id INT NULL,
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE,
PRIMARY KEY (id)
) ENGINE=INNODB
Ensuite, si vous ajoutez deux lignes, une référençant l'autre:
INSERT INTO parent (id,name,parent_id)
VALUES ('1', 'Test 1', NULL), ('2', 'Test 2', '1')
Ensuite, supprimez la rangée parente des deux:
DELETE FROM parent WHERE id = 1;
Vous allez Je trouve qu'il supprime la ligne enfant avec parent_id
de 1.
Tous mes articles sont dans une seule table. – jmccartie
Cela fonctionne toujours avec les relations dans une seule table. Je vais ajouter un exemple dans une seconde. –