Mam bazę danych komponentów. Każdy komponent ma określony typ. Oznacza to, że istnieje relacja wiele do jednego między komponentem a typem. Kiedy usuwam typ, chciałbym usunąć wszystkie komponenty, które mają klucz obcy tego typu. Ale jeśli się nie mylę, usuwanie kaskadowe usunie typ, gdy komponent zostanie usunięty. Czy istnieje sposób na to, co opisałem?Jak korzystać z kaskady usuwania w mysql?
Odpowiedz
Oto, co należy uwzględnić w tabeli komponentów.
CREATE TABLE `components` (
`id` int(10) unsigned NOT NULL auto_increment,
`typeId` int(10) unsigned NOT NULL,
`moreInfo` VARCHAR(32),
-- etc
PRIMARY KEY (`id`),
KEY `type` (`typeId`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)
Wystarczy pamiętać, że trzeba skorzystać z mechanizmu składowania InnoDB: silnik magazyn domyślny MyISAM nie obsługuje kluczy obcych.
Musisz zdefiniować ograniczenia klucza obcego jako NA KASKU DELETE.
Uwaga: Musisz użyć silnika pamięci InnoDB, domyślny silnik pamięci masowej MyISAM nie obsługuje relacji kluczy obcych.
CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`name` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ids` (`ids`)
CONSTRAINT `foreign` FOREIGN KEY (`ids`)
REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE
)
użycie tego sql
DELETE t1, t2 FROM T1 INNER JOIN T2 T1.key = T2.key WHERE warunek
To nie używa funkcji 'CASCADE', o którą prosił op. – displayname
Ale to rozwiązuje problem bez aktualizacji istniejącej struktury bazy danych. –
- 1. Usuwanie kaskady Oracle
- 2. Jak korzystać z regex w MySQL?
- 3. Jak korzystać z funkcji MySQL w Propel
- 4. Jak korzystać z modułu usuwania echa w PulseAudio?
- 5. Jak korzystać z metod dodawania i usuwania podstawowych danych (NSSet)?
- 6. Jak korzystać z buforowania instrukcji przygotowanego MySQL?
- 7. Jak korzystać GROUP_CONCAT w CONCAT w MySQL
- 8. Jak korzystać AES_ENCRYPT i AES_DECRYPT w mysql
- 9. kaskady i sygnały/gniazda
- 10. Jak korzystać z Regexp w MySQL Wymień polecenia?
- 11. Jak korzystać z przezroczystego szyfrowania danych w MySQL?
- 12. jak korzystać z funkcji kanonicznych w Entity Framework i Mysql
- 13. Błąd kaskady JPA
- 14. Jak korzystać z EF Core (EF7) z serwerem Mysql?
- 15. MySQL Błąd podczas usuwania indeksu (errno 150)
- 16. MySQL działa wolno podczas usuwania rekordów z dużej tabeli
- 17. Unikanie głęboko zagnieżdżone kaskady opcję w Scala
- 18. Jak korzystać z kluczy obcych w SQL Buddy?
- 19. Jak korzystać z ReadWriteLock?
- 20. Jak korzystać z funkcji TERAZ() i CURDATE() MySQL używają UTC?
- 21. Jak korzystać z rozszerzeń geoprzestrzennych MySQL o geometrii sferycznej
- 22. Jak korzystać z tabeli przechowywane wyjście MYSQL postępowania
- 23. Jak korzystać z RMySQL w Windows?
- 24. Jak korzystać jeśli warunek z lewej przyłączyć mysql
- 25. Jak korzystać z wireshark do przechwytywania zapytania sql mysql wyraźnie
- 26. Serwer SQL: odpowiednik kaskady kaskadowej?
- 27. Jak korzystać z sha256 w php5.3.0
- 28. Kaskadowanie w grze Combobox wymaga bardziej szczegółowej kaskady z opcji
- 29. Jak korzystać z RowStatus?
- 30. problem podczas usuwania wiersze wykorzystujące lewe sprzężenie zewnętrzne w mysql
NB, ON UPDATE CASCADE jest chyba zły pomysł, jeśli używasz go do połączenia klucza głównego, ponieważ powinien on być niezmienny, a poleganie na tym sugeruje, że baza danych może wymagać przeprojektowania, ale domyślam się, że jeśli łączysz go z kluczem obcym, który jest unikalny, ale nie podstawowy, jest w porządku. – ThinkBonobo