Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL]delete i foreign key
Forum PHP.pl > Forum > Przedszkole
zaajcu
mam bazę danych powiązaną kluczami obcymi.
Chciałbym usunąć jeden wiersz i wszystkie inne wiersze, które są z nim powiązane.
Jak to mogę zrobić?
Istnieje jakaś komenda sql która to zrobi czy trzeba się bawić w php?
ixpack
Tworząc struktury tabel ustaw foreign key dla kluczy i w momencie usunięcia "rodzica" usuniesz i wszystkie powiązane rekordy z 2-giej tabeli.

To mój "dump": - przeanalizuj tworzenie obu tabel (KEY i CONSTRAINT ważne), aha engine musi być InnoDb. Na myisam nie działa

  1. DROP TABLE IF EXISTS `main_data`;
  2. /*!40101 SET @saved_cs_client = @@character_set_client */;
  3. /*!40101 SET character_set_client = utf8 */;
  4. CREATE TABLE `main_data` (
  5. `customer_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  6. `title` enum('mr','ms','miss','mrs') CHARACTER SET latin1 NOT NULL,
  7. `name` varchar(50) NOT NULL,
  8. `surname` varchar(50) NOT NULL,
  9. `mobile_ext` smallint(5) UNSIGNED NOT NULL,
  10. `mobile_number` decimal(15,0) UNSIGNED NOT NULL,
  11. `date` date NOT NULL,
  12. PRIMARY KEY (`customer_id`),
  13. UNIQUE KEY `mobile_number_UNIQUE` (`mobile_number`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  15. /*!40101 SET character_set_client = @saved_cs_client */;
  16.  
  17. DROP TABLE IF EXISTS `email`;
  18. /*!40101 SET @saved_cs_client = @@character_set_client */;
  19. /*!40101 SET character_set_client = utf8 */;
  20. CREATE TABLE `email` (
  21. `customer_id` int(10) UNSIGNED NOT NULL,
  22. `e_mail` varchar(50) NOT NULL,
  23. PRIMARY KEY (`customer_id`),
  24. UNIQUE KEY `email_UNIQUE` (`e_mail`),
  25. KEY `fk_e_md` (`customer_id`),
  26. CONSTRAINT `fk_e_md` FOREIGN KEY (`customer_id`) REFERENCES `main_data` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE
  27. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  28. /*!40101 SET character_set_client = @saved_cs_client */;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.