Klucz obcy
John Łejn - 10-09-2006 00:16
Klucz obcy
Mam małe pytanie czy kluczu ocych w tabeli moze byc wiecej niz jeden? Otóż. mam tapele prac, gdzie jest id, imie, nazwisko, id_adress, id_um. Id - primary key. Druga z adres -z adresmi gdzie id_adress jest kluczem głownym. trzecia natomiast to um, gdzir id_um jest głównym i teraz, tworzac pierwsza tabele napisałem: Create table prac (id int NOT NULL AUTO_INCREMENT, imie char(20), nazwisko char(35), id_adres int, PRIMARY KEY(id), Foreign key (id_ adress) REFERENCES adres (id_adres) ON UPDATE CASCADE); Kluczem pbcym jest id_adress, nastepnie po stworzeniu trtzeciej tabeli pisze: Alter TABLE prac MODIFY column id_umiejetnosci int FOREIGN KEY (id_umiejetnosci) REFERENCES umiejetnosci (id_umiejetnosci) ON UPDATE CASCADE;
i wyskakuje mi bład: ERROR 1064 (42000): 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 'foreign key (id_umiejetnosci) references umiejetnosci (id_umiejetnosci) ON UPDAT' at line 1
siedze juz nad tym troche czasu i nic wyłapac nie moge... Moze ktos bedzie wiedział w czym tkwi problem?
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Jacek Czapla - 10-09-2006 00:16
John Łejn napisał(a): > Mam małe pytanie czy kluczu ocych w tabeli moze byc wiecej niz jeden?
Na pewno. Przecież każda tabela łącząca w relacji wiele-do-wielu ma 2 klucze obce.
> Otóż. mam tapele prac, gdzie jest id, imie, nazwisko, id_adress, id_um. Id - > primary key. > Druga z adres -z adresmi gdzie id_adress jest kluczem głownym. > trzecia natomiast to um, gdzir id_um jest głównym i teraz, tworzac pierwsza > tabele napisałem: > Create table prac (id int NOT NULL AUTO_INCREMENT, imie char(20), nazwisko > char(35), id_adres int, PRIMARY KEY(id), Foreign key (id_ > adress) REFERENCES adres (id_adres) ON UPDATE CASCADE); Kluczem pbcym jest > id_adress, > nastepnie po stworzeniu trtzeciej tabeli pisze: > Alter TABLE prac MODIFY column id_umiejetnosci int FOREIGN KEY (id_umiejetnosci)
Może ... ADD FOREIGN KEY ...
-- *Jacek Czapla* //usuń ".pułapka" z adresu email www.ASIT.pl http://www.busyonline.pl - Rezerwacja miejsc w busach
Łejn - 10-09-2006 00:59
robie tak, tworze trzy tablice:
CREATE TABLE Adresy ( Id_adres INT UNSIGNED NOT NULL AUTO_INCREMENT, kod VARCHAR(10), miasto VARCHAR(45), ulica VARCHAR(45), nr_domu VARCHAR(45), Nr_telefonu VARCHAR(45), PRIMARY KEY (Id_adres));
CREATE TABLE Umiejetnosci ( idUmiejetnosci INT UNSIGNED NOT NULL AUTO_INCREMENT, stanowisko VARCHAR(45), wyksztalcenie VARCHAR(45), jezyki VARCHAR(45), specjalnosc VARCHAR(45), atrybuty VARCHAR(250), PRIMARY KEY (idUmiejetnosci));
przy tworzeniu trzeciej: CREATE TABLE Pracownicy ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, imie VARCHAR(45), nazwisko VARCHAR(45), id_adresy INT NOT NULL, id_umiejetnosci INT NOT NULL, PRIMARY KEY (id), index id_adresy_index (id_adresy), CONSTRAINT id_adres FOREIGN KEY id_adres (id_adresy) REFERENCES Adresy (Id_adres), index id_umiejetnosci_index (id_umiejetnosci), CONSTRAINT id_umiejetnosci FOREIGN KEY id_umiejetnosci (id_umiejetnosci) REFERENCES Umiejetnosci (idUmiejetnosci) );
Wyskakuje mi błąd; ERROR 1005 (HY000): Can't create table '.\test\pracow.frm' (errno: 150); wyczytałem ze to indeksy... chyba; wiec je zadeklarowałem.. ale tez cos chyba nie dobrze bo nadalowy bład wyskakuje czy ktos potrafił by pomóc, ....tyłek mi sie juz pali, czasu coraz mniej a tu co chwile cos ehh
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Łukasz - 13-09-2006 02:07
Użytkownik "John Łejn" <darkos007@op.pl> napisał w wiadomości news:5ba0.0000014e.44fc3a6b@newsgate.onet.pl...
> Alter TABLE prac MODIFY column id_umiejetnosci int FOREIGN KEY > (id_umiejetnosci) > REFERENCES umiejetnosci (id_umiejetnosci) ON UPDATE CASCADE; > Nie dodawaj klucza obcego do kolumny tylko do tabeli (dodajesz wtedy klucz nazwany jawnie) coś a'la ALTER TABLE XXX ADD CONSTRAINT YYY FOREIGN KEY...
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[pgsql] Klucz glowny bedacy referencja???
Klucz złożony - prosba o wzor create
Klucz główny tekstowy czy int?
Złączenie i klucz złożony
MySQL - klucz glowny
klucz po uniqueidentifier
teoria, klucz obcy jako glowny oraz hibernate
Postgres, widok i klucz obcy do niego
Sortowanie tabel
[oracle] dbms_utility.format_error_backtrace
zanotowane.pldoc.pisz.plpdf.pisz.platanvarne633.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|