J'essaie de supprimer des lignes de plusieurs tables connectées. Mais quand j'exécute la procédure stockée 0 lignes sont affectées. Comme vous pouvez le voir, la fonction est assez étendue mais l'idée est de supprimer les lignes de nombreuses tables connectées.Supprimer des lignes de plusieurs tables avec une jointure
Comment est-ce que je peux faire ce travail?
CREATE DEFINER=`root`@`localhost` PROCEDURE `remove_tables_select1`(
IN in_TableA_ID INT
)
BEGIN
DELETE FROM TableB, TableC, TableD, TableE, TableA, TableF, TableG, TableH, TableI
using TableB
inner join TableC on (TableC.ID = TableB.TableC_ID)
inner join TableH on (TableH.TableB_ID = TableB.ID)
inner join TableD on (TableD.TableB_ID = TableB.ID)
inner join TableE on (TableE.TableB_ID = TableB.ID)
inner join TableA on (TableA.ID = in_TableA_ID)
inner join TableF on (TableF.TableA_ID = TableA.ID)
inner join TableG on (TableG.TableA_ID = TableA.ID)
inner join TableI on (TableI.TableH_ID = TableH.ID);
END
Un petit exemple:
CREATE DEFINER=`root`@`localhost` PROCEDURE `remove_tables_select1`(
IN in_TableA_ID INT
)
BEGIN
DELETE FROM TableA, TableB, TableC, TableD
using TableA
inner join TableB on (TableB.ID = TableA.TableB_ID)
inner join TableC on (TableC.TableB_ID = TableC.ID)
inner join TableD on (TableC.TableD_ID = TableD.ID)
WHERE TableA.ID = in_TableA_ID;
END
Vérifiez que la requête SELECT correspondante renvoie des enregistrements. –