Ich habe Probleme mit Navicat auf Ubuntu 16.04 LTS, ich versuche, das Skript auszuführen, und es am letzten Tisch sagt, dass das nicht kann Fremdschlüsseleinschränkung hinzufügen, hier ist mein Skript, weiß jemand, dass ich irgendwo falsch liege?MySQL wird keinen Fremdschlüssel mehr als einen Fremdschlüssel zu derselben Tabelle hinzufügen
Vielen Dank im Rat
Hier ist mein SQL-Skript:
CREATE TABLE `SMER` (
`Ssmer` INT(10) NOT NULL AUTO_INCREMENT,
`Nazivs` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Ssmer`)
);
CREATE TABLE `Nastavnici` (
`Snast` INT(10) NOT NULL AUTO_INCREMENT,
`Imen` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Snast`)
);
CREATE TABLE `PREDMETI` (
`SPRED` INT(10) NOT NULL AUTO_INCREMENT,
`NAZIVP` VARCHAR(255) NOT NULL,
PRIMARY KEY (`SPRED`)
);
CREATE TABLE `Studenti` (
`Indeks` INT(10) NOT NULL,
`Upisan` INT(10) NOT NULL,
`Imes` VARCHAR(255) NOT NULL,
`Mesto` VARCHAR(255),
`Datr` DATETIME NOT NULL,
`Ssmer` INT(10) NOT NULL,
PRIMARY KEY (`Indeks`, `Upisan`),
CONSTRAINT `FK_Studenti_Ssmer` FOREIGN KEY (`Ssmer`) REFERENCES `SMER` (`Ssmer`)
);
CREATE TABLE `USLOVNI` (
`Spred` INT(10) NOT NULL,
`UslPredmet` INT(10) NOT NULL,
PRIMARY KEY (`Spred`, `UslPredmet`),
CONSTRAINT `FK_Uslovni_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`),
CONSTRAINT `FK_Uslovni_UslPredmet` FOREIGN KEY (`UslPredmet`) REFERENCES `PREDMETI` (`SPRED`)
);
CREATE TABLE `Planst` (
`Ssmer` INT(10) NOT NULL,
`Spred` INT(10) NOT NULL,
`Semestar` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`Ssmer`, `Spred`),
CONSTRAINT `FK_Planst_Ssmer` FOREIGN KEY (`Ssmer`) REFERENCES `SMER` (`Ssmer`),
CONSTRAINT `FK_Planst_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`)
);
CREATE TABLE `Angazovanje` (
`Snast` INT(10) NOT NULL,
`Spred` INT(10) NOT NULL,
`Ssmer` INT(10) NOT NULL,
PRIMARY KEY (`Snast`, `Spred`, `Ssmer`),
CONSTRAINT `FK_Angazovanje_Snast` FOREIGN KEY (`Snast`) REFERENCES `Nastavnici` (`Snast`),
CONSTRAINT `FK_Angazovanje_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`),
CONSTRAINT `FK_Angazovanje_Ssmer` FOREIGN KEY (`Ssmer`) REFERENCES `SMER` (`Ssmer`)
);
CREATE TABLE `Prijave` (
`Spred` INT(10) NOT NULL,
`Indeks` INT(10) NOT NULL,
`Upisan` INT(10) NOT NULL,
`Snast` INT(10) NOT NULL,
`Datump` DATETIME DEFAULT NOW(),
`Ocena` INT(2) NOT NULL,
PRIMARY KEY (`Spred`, `Indeks`, `Upisan`, `Datump`),
CONSTRAINT `FK_Prijave_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`),
CONSTRAINT `FK_Prijave_Indeks` FOREIGN KEY (`Indeks`) REFERENCES `Studenti` (`Indeks`),
CONSTRAINT `FK_Prijave_Upisan` FOREIGN KEY (`Upisan`) REFERENCES `Studenti` (`Upisan`),
CONSTRAINT `FK_Prijave_Snast` FOREIGN KEY (`Snast`) REFERENCES `Nastavnici` (`Snast`)
);
Hier ist die Fehlermeldung:
[Err] 1215 - Cannot add foreign key constraint
Fügen Sie die genaue Fehlermeldung auch ein? –
Ich bin mir nicht sicher, aber es könnte sein, dass zwei verschiedene Fremdschlüssel zu ein und derselben Tabelle 'Student' nicht erlaubt sind (zumindest nicht in allen MySQL-Versionen). Erhalten Sie immer noch denselben Fehler, wenn Sie eine der Einschränkungen entfernen? Zum Beispiel versuchen Sie, die Zeile 'CONSTRAINT FK_Prijave_Upisan FOREIGN KEY (Upisan) REFERENZEN Studenti (Upisan),' und lassen Sie uns wissen, wenn der Fehler immer noch existiert ... –
Wenn ich diese Einschränkung zu entfernen, funktioniert es auch – tehnodrom