Schemat:
1. Twoje tabele muszą być typu InnDB
2. Wybierz tabelę podrzędną i przejdź do widoku 'Struktura'
3. Poniżej tabelki opisującej poszczególne kolumny będzie link 'Widok relacyjny'. Kliknij w niego.
4. Określ referencje, akcje 'ON DELETE' i 'ON UPDATE'
Tabele:
-- -- Struktura tabeli dla tabeli `wpl_users` -- CREATE TABLE IF NOT EXISTS `wpl_users` ( `users_id` int(11) NOT NULL AUTO_INCREMENT, `users_usersdane_id` int(11) NOT NULL, `users_login` varchar(50) NOT NULL, `users_haslo` varchar(50) NOT NULL, `users_token` varchar(10) NOT NULL, `users_aktywny` int(11) NOT NULL, PRIMARY KEY (`users_id`), KEY `users_usersdane_id` (`users_usersdane_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -- -- Zrzut danych tabeli `wpl_users` -- INSERT INTO `wpl_users` (`users_id`, `users_usersdane_id`, `users_login`, `users_haslo`, `users_token`, `users_aktywny`) VALUES (1, 0, 'root', '123456', '', 1); -- -------------------------------------------------------- -- -- Struktura tabeli dla tabeli `wpl_usersdane` -- CREATE TABLE IF NOT EXISTS `wpl_usersdane` ( `usersdane_id` int(11) NOT NULL AUTO_INCREMENT, `usersdane_users_id` int(11) NOT NULL, `usersdane_imie` varchar(50) NOT NULL, `usersdane_nazwisko` varchar(50) NOT NULL, `usersdane_emial` varchar(50) NOT NULL, PRIMARY KEY (`usersdane_id`), KEY `usersdane_users_id` (`usersdane_users_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
Pokazuje sie taki blad:
Zapytanie SQL: ALTER TABLE `wpl_users` ADD FOREIGN KEY ( `users_dane_id` ) REFERENCES `projekt2`.`wpl_dane` ( `dane_id` ) ON DELETE CASCADE ON UPDATE CASCADE ; MySQL zwrócił komunikat: Dokumentacja #1452 - Cannot add or update a child row: a foreign key constraint fails (`projekt2`.`#sql-34c0_258`, CONSTRAINT `#sql-34c0_258_ibfk_1` FOREIGN KEY (`users_dane_id`) REFERENCES `wpl_dane` (`dane_id`) ON DELETE CASCADE ON UPDATE CASCADE)
ps
dla jednej tabeli tak jakby w jedna strone juz mi cos wyszlo czyli
ALTER TABLE `wpl_usersdane` ADD CONSTRAINT `wpl_usersdane_ibfk_1` FOREIGN KEY (`usersdane_users_id`) REFERENCES `wpl_users` (`users_id`);
ale jak teraz zuser do dane chce to jest blad? o co chodzi wie ktos? pierwszy raz chce zrobic baze oparta o relacje i nie mam pojecia co jest nie tak
Probowalem tez cos takiego ale nie dziala:
ALTER TABLE [wpl_users] WITH CHECK ADD CONSTRAINT [FK_users_dane] FOREIGN KEY [users_dane_id] REFERENCES [wpl_dane] [dane_id] ALTER TABLE [wpl_users] CHECK CONSTRAINT [FK_users_danes]