Chce stworzyc relacje pomiedzy tabela users i dane
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]