Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nie moge usunac wpisu ze wzgledu na klucz obcy
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


Czesc, mam taki problem:
mam 2 tabele: users i user_to_pages. users to tablica z uzytkownikami a user_to_pages to tablica ktora trzyma konfiguracje pages dla userow, zawiera 2 pola: user_id i page_id. Jej struktura wyglada tak:

  1. CREATE TABLE user_to_pages (
  2. id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
  3. user_id INT NOT NULL,
  4. page_id INT NOT NULL,
  5. FOREIGN KEY (user_id) REFERENCES users(id) ON UPDATE CASCADE ON DELETE NO ACTION,
  6. FOREIGN KEY (page_id) REFERENCES pages(id) ON UPDATE CASCADE ON DELETE NO ACTION
  7. ) CHARACTER SET utf8 COLLATE utf8_general_ci;




jak probuje usunac rekord z tabeli users to dostaje:
  1. Cannot delete or update a parent row: a foreign key constraint fails (`dbname`.`user_to_pages`, CONSTRAINT `user_to_pages_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE)


dlaczego? przeciez na delete jest no action. Czy na delete tez musi byc cascade abym mogla usuwac z tabeli users?

ps. to sa InnoDb

pzdr,
misty

Ten post edytował misty 2.02.2012, 12:01:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(misty @ 2.02.2012, 11:55:36 ) *
Czy na delete tez musi byc cascade abym mogla usuwac z tabeli users?

Tak
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Czy na delete tez musi byc cascade abym mogla usuwac z tabeli users?

A wystarczyło zajrzec do manuala
http://dev.mysql.com/doc/refman/5.5/en/inn...onstraints.html
:/
Cytat
NO ACTION: A keyword from standard SQL. In MySQL, equivalent to RESTRICT.
Go to the top of the page
+Quote Post
misty
post
Post #4





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


no to ja tego troche nie kumam. przeciez skoro jest NO ACTION to NO ACTION.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przeczytaj jeszcze raz uważnie moj ostatni post
Go to the top of the page
+Quote Post
misty
post
Post #6





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


ok, juz kumam:

  1. NO ACTION: A keyword from standard SQL. In MySQL, equivalent to RESTRICT. InnoDB rejects the delete or update operation for the parent table if there is a related foreign key value in the referenced table.


dzieki, pzdr

A czy ja moge teraz napisac jakis automatyczny skrypt na update tych indeksow? Czy wpierw musze znalezc ich nazwe i potem recznie usunac indeks i stworzyc na nowo? Pytam poniewaz musze to zrobic w paru miejscach i fajnie by bylo przygotowac automatyczny skrypt.

tzn czy moge zrobic cos takiego ze usune wszystkie klucze obce na danej tabeli? ale w sensie ze automatycznie a nie ze wpierw sobie nazwe sprawdze i wtedy usuwam. Cos w stylu:

delete all foreign keys from table mytable

?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://dev.mysql.com/doc/refman/5.0/en/show-index.html
Moze to ci pomoze
Go to the top of the page
+Quote Post
misty
post
Post #8





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


nie, to nie pomoze, juz patrzalam. to mi zwraca liste inedksow, ale w ogole bez ich name. czyli musze recznie "show create table.." - stamtad nazwe indexu, usunac i na nowo.. masakra.. :/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:32