Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Integralność kluczy, czy jak to sie tam nazywa ;)
Fallout
post
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


Witam,

posiadam 2 tabele o takej strukturze:

  1. CREATE TABLE blogs (
  2. b_id Int NOT NULL AUTO_INCREMENT,
  3. u_id Int NOT NULL,
  4. b_name Char(18) NOT NULL,
  5. b_title Char(60),
  6. b_reg_date Timestamp NULL,
  7. b_counter Int,
  8. UNIQUE (b_id),
  9. UNIQUE (b_name),
  10. PRIMARY KEY (b_id)) ENGINE = InnoDB;
  11.  
  12. CREATE TABLE users (
  13. u_id Int NOT NULL AUTO_INCREMENT,
  14. u_login Char(32) NOT NULL,
  15. u_pass Char(32) NOT NULL,
  16. u_email Char(20) NOT NULL,
  17. PRIMARY KEY (u_id)) ENGINE = InnoDB;


i takich powiązaniach:

  1. ALTER TABLE blogs ADD FOREIGN KEY (u_id) REFERENCES users (u_id) ON DELETE cascade ON UPDATE cascade;
  2. ALTER TABLE friends ADD FOREIGN KEY (u_id) REFERENCES users (u_id) ON DELETE cascade ON UPDATE cascade;


i teraz zamiana/usunięcie danego id w tabeli 'users' powoduje usunięcie odpowiednich rekordów w tabeli 'blogs'. Czyli on delete i on update działa dla rodzica (parent). Ale jak zrobić to dla dziecka? (child)

dla child chyba jest tylko 'NONE' lub 'RESTRICT' a ja chcialbym cascade. Da się to zrobić w MySql? (4.1)

z góry dzięki za (p)odpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Nie ma takiej opcji -- usuniecie dziecka nie ma wplywu na rodzica.

Moglbys trigera napisac, ale nie w 4.1 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Fallout
post
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


niestety moj hosting nie ma mysql 5 :/ no to lipton bede musial to recznie robic. Ale i tak dopiero odkrywam InnoDB i mi sie coraz bedziej zaczyna podobać (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

dzięki za odp.

p.s. a jakby trigger wyglądał? Sobie na localu poćwiczę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Fallout 15.10.2006, 13:33:24
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
a jakby trigger wyglądał? Sobie na localu poćwiczę

Nie zabraniam....(czytaj: nie wiem) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ale pamietaj ze usuniecie rodzica spowoduje usuwanie dzieci co znowu wywola tego samego triggera ktory to zacznie usuwac rodzicow a potem .......
Go to the top of the page
+Quote Post
cicik
post
Post #5





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

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


Cytat(dr_bonzo @ 15.10.2006, 13:56:20 ) *
Ale pamietaj ze usuniecie rodzica spowoduje usuwanie dzieci co znowu wywola tego samego triggera ktory to zacznie usuwac rodzicow a potem .......


Nie prawda. W mysqlu przy kaskadowym usuwaniu po kluczach obcych trigegry nie sa wywolywane (poniekad niestety).
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: 25.08.2025 - 14:49