Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] relacje i DELETE
Forum PHP.pl > Forum > Przedszkole
novy85
witam,

można tak usuwać, a jak można to co tu jest źle?

  1. DELETE FROM auth_users au, auth_role_user aru, auth_user_data aud WHERE au.id=aru.id_user AND aud.id_user=16'
tvister
Błędem jest ten pojedynczy ciapek na końcu zapytania :-)
Tak serio to można tak usuwać. Być może jest problem w strukturze bd np. założone więzy, indeksy lub też brakuje połączenia między tabelami.
Podaj treść wyjątku to napisze coś więcej.
novy85
mama tabele:
  1. CREATE TABLE IF NOT EXISTS `auth_users` (
  2. `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `email` varchar(127) NOT NULL,
  4. `username` varchar(32) NOT NULL DEFAULT '',
  5. `password` char(50) NOT NULL,
  6. `logins` int(10) UNSIGNED NOT NULL DEFAULT '0',
  7. `admin` tinyint(4) DEFAULT '0',
  8. `active` tinyint(1) NOT NULL DEFAULT '1',
  9. `active_to` datetime DEFAULT NULL,
  10. `moderator` tinyint(4) DEFAULT '0',
  11. `ip_address` varchar(15) DEFAULT NULL,
  12. `last_ip_address` varchar(15) DEFAULT NULL,
  13. `time_stamp` datetime DEFAULT NULL,
  14. `last_time_stamp` datetime DEFAULT NULL,
  15. `time_stamp_created` datetime DEFAULT NULL,
  16. `stan` tinyint(1) NOT NULL DEFAULT '0',
  17. PRIMARY KEY (`id`)
  18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
  19.  
  20. CREATE TABLE auth_role_user (
  21. id INT NOT NULL AUTO_INCREMENT,
  22. id_role INT(11) NOT NULL,
  23. id_user INT(11) UNSIGNED NOT NULL,
  24. PRIMARY KEY(id),
  25. CONSTRAINT `new_fk_constraint1` FOREIGN KEY (`id_role`) REFERENCES `auth_role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  26. CONSTRAINT `new_fk_constraint2` FOREIGN KEY (`id_user`) REFERENCES `auth_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
  27. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  28.  
  29. CREATE TABLE auth_user_data (
  30. id INT(11) NOT NULL AUTO_INCREMENT,
  31. id_user INT(11) UNSIGNED NOT NULL,
  32. name VARCHAR(100) NULL,
  33. lang VARCHAR(4) NULL,
  34. edytor TINYINT(1) UNSIGNED NULL,
  35. PRIMARY KEY(id),
  36. CONSTRAINT `new_fk_constraint3` FOREIGN KEY (`id_user`) REFERENCES `auth_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
  37. )ENGINE=InnoDB DEFAULT CHARSET=utf8;


oraz zapytanie:
  1. DELETE FROM auth_users au, auth_role_user aru, auth_user_data aud WHERE au.id=aru.id_user AND aud.id_user=16


oraz błąd:
Wystąpił błąd SQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'au, auth_role_user aru, auth_user_data aud WHERE au.id=aru.id_user AND aud.id_us' at line 1 - DELETE FROM auth_users au, auth_role_user aru, auth_user_data aud WHERE au.id=aru.id_user AND aud.id_user=16

P.S. używam Kohana framework
phpion
Cytat(novy85 @ 23.11.2009, 14:02:49 ) *
P.S. używam Kohana framework

I słusznie, ale to nie ma nic do rzeczy. Jeśli masz ustawione usuwanie kaskadowe (a masz) to wystarczy:
  1. DELETE FROM auth_users WHERE id=16

i powinny zostać również usunięte wszystkie rekordy powiązane.

PS: W tabeli auth_role_user nie potrzebujesz kolumny id; kluczem głównym powinien być identyfikator użytkownika oraz identyfikator roli.
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.