![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam. Czy jest jakiś sposób, aby, zmieniając nazwę klucza głównego tabeli, będącego jednocześnie kluczem obcym dla innych tabel - zmieniłaby się automatycznie nazwa w relacji klucza obcego w tabelach, które są w relacji do tabeli, w której następuje zmiana nazwy klucza głównego? Na razie wygląda to tak, że, aby zmienić nazwę PK, muszę najpierw pousuwać relacje w tabelach skojarzonych, następnie dopiero wtedy mogę zmienić nazwę klucza głównego i na koniec muszę od nowa tworzyć relacje z odpowiednią (zmienioną) nazwą, co przysparza mi 5 razy więcej pracy niż początkowo zakładałem (ma do przeróbki ponad 50 tabel).
// edit Ostatecznie rozwiąże to pisząc prosty skrypt zmieniający nazwy w eksporcie i zrobię ponowny import składni create. // edit 2 Problem rozwiązałem pisząc prosty skrypt zmieniający nazwy kluczy w wyeksportowanej strukturze bazy Ten post edytował darko 9.02.2010, 19:25:42 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
ON UPDATE CASCADE?
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Część tabel ma tak ustawione klucze obce, jednak część nie może (i ma NO ACTION), gdyż nie chcę, kiedy usunę np. wpis języka - usunąć wszystkich artykułów itd. więc rozwiązanie odpada... No nic, chyba jedynym wyjściem jest napisanie skryptu, który podmieni na odpowiednie nazwy kluczy w eksporcie (zrzucie) tabel i zrobienie ponownego importu.
// edit zmiana wszędzie na on update cascade też nic nie dała (phpMyAdmin 2.11.8.1): Cytat ALTER TABLE `x` CHANGE `id_x` `id_a_x` INT( 11 ) NOT NULL AUTO_INCREMENT COMMENT 'PK' MySQL zwrócił komunikat: #1025 - Error on rename of './shop_x/#sql-a95_a2' to './shop_x/x' (errno: 150) // edit 3 ON UPDATE CASCADE oczywiście zadziałałoby, gdybym miał pustą bazę, tymczasem miałem w niej dane. Mój błąd, mimo wszystko dzięki. Ten post edytował darko 12.02.2010, 02:15:59 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 12:54 |