easy php - create table on delete cascade

easy php - create table on delete cascade - SQL/NoSQL - Programmation

Marsh Posté le 15-12-2015 à 09:18:28    

Bonjour !  
 
J'ai un script pour créer une bdd dans un fichier php, qui s'exécute correctement, qui crée bien la bdd et tout mais lorsque que je vais sur phpmyadmin, que je supprime une ligne, la suppression en cascade ne fonctionne pas... est-ce normal ?  
 
voici mon script de création :  

Code :
  1. //Création de la table Enquete
  2. $tabenq = "CREATE TABLE IF NOT EXISTS 1_Enquete (
  3. idEnquete INT NOT NULL AUTO_INCREMENT,
  4. nomEnquete VARCHAR(255) NOT NULL,
  5. PRIMARY KEY (idEnquete));";
  6. //Création de la table rubrique
  7. $tabrub = "CREATE TABLE IF NOT EXISTS 2_Rubrique (
  8. idRubrique INT NOT NULL AUTO_INCREMENT,
  9. nomRubrique VARCHAR(255) NOT NULL,
  10. idEnquete INT NOT NULL,
  11. PRIMARY KEY (idRubrique),
  12. INDEX idEnq_ind (idEnquete),
  13. FOREIGN KEY (idEnquete) REFERENCES 1_Enquete(idEnquete) ON DELETE CASCADE);";
  14. //Création de la table Q1
  15. $tabq1 = "CREATE TABLE IF NOT EXISTS 3_Q1 (
  16. idQ1 INT NOT NULL AUTO_INCREMENT,
  17. libelleQ1 VARCHAR(255) NOT NULL,
  18. idRubrique INT NOT NULL,
  19. PRIMARY KEY (idQ1),
  20. INDEX idRub_ind (idRubrique),
  21. FOREIGN KEY (idRubrique) REFERENCES 2_Rubrique(idRubrique) ON DELETE CASCADE);";
  22. //Création de la table Q2
  23. $tabq2 = "CREATE TABLE IF NOT EXISTS 4_Q2 (
  24. idQ2 INT NOT NULL AUTO_INCREMENT,
  25. libelleQ2 VARCHAR(255) NOT NULL,
  26. idQ1 INT NOT NULL,
  27. PRIMARY KEY (idQ2),
  28. INDEX idQ1_ind (idQ1),
  29. FOREIGN KEY (idQ1) REFERENCES 3_Q1(idQ1) ON DELETE CASCADE)";
  30. //Création de la table Campagne
  31. $tabCamp = "CREATE TABLE IF NOT EXISTS 5_Campagne (
  32. idCampagne INT NOT NULL AUTO_INCREMENT,
  33. dateCampagne DATE NOT NULL,
  34. idEnquete INT NOT NULL,
  35. PRIMARY KEY (idCampagne),
  36. INDEX idEnqCamp_ind (idEnquete),
  37. FOREIGN KEY (idEnquete) REFERENCES 1_Enquete(idEnquete) ON DELETE CASCADE);";


 
 
Du coup j'ai également essayé de faire un  

Code :
  1. DELETE FROM 1_enquete CASCADE
  2. WHERE idEnquete = 1


 
mais ça ne fonctionne pas (erreur sur le terme CASCADE)
 :jap:  :jap:


Message édité par minimoack le 15-12-2015 à 09:21:25
Reply

Marsh Posté le 15-12-2015 à 09:18:28   

Reply

Marsh Posté le 15-12-2015 à 09:49:46    

Je viens de regarder le concepteur et les tables ne sont pas reliées par les clefs étrangères... je ne comprends pas pourquoi. Je sais le modifier manuellement, mais pourquoi les liens entre les tables ne sont-ils pas pris en compte?

Reply

Marsh Posté le 17-12-2015 à 13:47:42    

Bon, c'est bon, j'ai trouvé.  
fallait mettre "ENGINE=InnoDB  DEFAULT CHARSET=latin1;" à la fin de chaque create table pour que les liens entre les tables soient pris en compte.  :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed