![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Czy da się w mysql zbudować klucz obcy będący kombinacją kilku pól?
Są dwie tabele Nadrzędna A: Kod col1,col2,col3 1| 1| Ala 1| 2| Kasia 2| 1| Basia 2| 2| Zosia PRIMARY KEY on (col1,col2) Podrzędna B: Kod col1,col2,col4 1| 1| 34 1| 1| 12 1| 2| 67 2| 1| 98 PRIMARY KEY on (col1,col2,col4) i chcę teraz żeby usuwając rekord z tabeli A o danej wartości klucza (col1,col2) osunięte zostały z tabeli B wszystkie rekordy dla których B(col1,col2)=A(col1,col2) Jak to zapisać? -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
a czy zajrzenie do manuala:
http://dev.mysql.com/doc/refman/5.1/en/inn...onstraints.html i wyczytanie czy jest to możliwe czy nie to tak cięzko? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod sql tworzący dwie tabele i na końcu foreign key:
i dostaje error: Kod #1005 - Can't create table 'test.#sql-848_1cb' (errno: 150) i wielki płacz Co robię nie tak? -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
NIe zebym sie czepial, ale na stronie do ktorej dalem ci linka masz ten problem opisany...
Cytat Also, it is interesting to note that while this query works (Note the PRIMARY KEY line): CREATE TABLE `ffxi_characterJob` ( `serverID` int(11) NOT NULL, `userid` int(10)unsigned NOT NULL, `characterName` varchar(255) NOT NULL, `jobAbbr` char(4) NOT NULL, `jobLevel` int(11) default '0', PRIMARY KEY (`serverID`,`userid`,`characterName`,`jobAbbr`), INDEX (`jobAbbr`), CONSTRAINT FOREIGN KEY (`serverID`,`userid`,`characterName`) REFERENCES `ffxi_characters` (`serverID`,`userid`,`characterName`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT FOREIGN KEY (`jobAbbr`) REFERENCES `ffxi_jobType` (`jobAbbr`) ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=InnoDB; This query will give you an error 1005 and errno 150: CREATE TABLE `ffxi_characterJob` ( `serverID` int(11) NOT NULL, `userid` int(10)unsigned NOT NULL, `characterName` varchar(255) NOT NULL, `jobAbbr` char(4) NOT NULL, `jobLevel` int(11) default '0', PRIMARY KEY (`jobAbbr`,`serverID`,`userid`,`characterName`), INDEX (`jobAbbr`), CONSTRAINT FOREIGN KEY (`serverID`,`userid`,`characterName`) REFERENCES `ffxi_characters` (`serverID`,`userid`,`characterName`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT FOREIGN KEY (`jobAbbr`) REFERENCES `ffxi_jobType` (`jobAbbr`) ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=InnoDB; In order to make the second one work, you have to add: INDEX (`serverID`,`userid`,`characterName`) before the the foreign key is made. Jakby co to podane tu rozwiązanie działa. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:21 |