 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
21.09.2007, 19:17
|
#1
|
|
TP-Member
Registriert seit: Jan 2003
Ort: Piesbach
|
[SQL] Foreign Key - Bedingung wird ignoriert
Hallo Leute!
Mich plagt momentan das Problem, dass eine Foreign Key - Anweisung stumpf ignoriert zu werden scheint ...
Folgendes Beispiel:
Code:
CREATE TABLE Haus(HausNr INT PRIMARY KEY);
CREATE TABLE Zimmer(ZimmerNr INT PRIMARY KEY, in_Haus INT REFERENCES Haus(HausNr));
// In der Tabelle Haus sind nun die Hausnummer 100 und 101 gespeichert, also sollte ich kein Zimmer eintragen können, welches in Haus Nummer 102 ist, jedoch ist folgender Befehl erfolgreich
INSERT INTO Zimmer VALUES(23,102);
// Hier sollte doch eigentlich gemeckert werden, das ein Haus mit der Nummer 102 nicht existiert, oder überseh ich da etwas?
Ich habe bei mir lokal die aktuelle Version des xampp installiert und führe die Befehle im mysql-Monitor aus.
Server Version: 5.0.45-community-nt Mysql Community Edition (GPL)
Gruß, fraggle
__________________
~
|
|
|
22.09.2007, 15:17
|
#2
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Erstmal Foreign Key != References
und Foreign Key steht nur mit einer InnoDB zur Verfügung, nicht mit einer MyISAM.
Nachdem man das bedacht hat, sollte man sich folgendes durchlesen und dann wird schnell klar, warum sich das Statement anders verhält, als Du es erwartest.
http://dev.mysql.com/doc/refman/5.1/...reign-keys.htm
|
|
|
22.09.2007, 15:58
|
#3
|
|
TP-Member
Registriert seit: Jan 2003
Ort: Piesbach
|
Also, wenn ich folgendes unter einer InnoDB-Datenbank ausführen würde, käme ich zum gewünschten Ergebnis?
Code:
CREATE TABLE Haus(HausNr INT PRIMARY KEY);
CREATE TABLE Zimmer(ZimmerNr INT PRIMARY KEY, in_Haus INT, FOREIGN KEY in_Haus REFERENCES Haus(HausNr));
INSERT INTO Haus VALUES(100);
INSERT INTO Zimmer VALUES(23,102);
-> Fehler
jedenfalls hab ich das nun so in der art verstanden 
__________________
~
|
|
|
22.09.2007, 16:07
|
#4
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Wenn Du Jetzt noch Zimmer im Syntax korrigierst, ja
Code:
CREATE TABLE Zimmer(
ZimmerNr INT PRIMARY KEY,
in_Haus INT,
FOREIGN KEY (in_Haus) REFERENCES Haus (HausNr)
);
Aber vorsichtig!
Nicht jeder Hoster bietet InnoDB, das sollte man vorher prüfen.
|
|
|
22.09.2007, 16:28
|
#5
|
|
TP-Member
Registriert seit: Jan 2003
Ort: Piesbach
|
Vielen Dank!
Es geht mir im Moment weniger um die private Anwendung. Ich schreib demnächst eine Klausur über Datenbanken, und wollte einfach mal das ein oder andere testen um es in der Praxis zu sehen.
Mal schauen ob ich meinen Server noch umstruktiere oder es bei der Theorie belasse 
__________________
~
|
|
|
22.09.2007, 16:43
|
#6
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Klausur ... Datenbanken ...
Also ich habe im Studium in Datenbanken nur mit Oracle gearbeitet.
Daher hier noch diese Anmerkung dazu.
Das Verhalten der DBS unterscheidet sich hier und da schon von einander.
Wo man bei MySQL unter der Verwendung von Fremdschlüsseln auf die Engine achten muss, muss man bei Oracle keinen Gedanken in die Richtung verschwenden.
Weiterhin kann sich die Syntax der DBS unterscheiden. Dieses sollte man bei einer globalen Betrachtung von DBS bedenken.
Nicht das Du Dich da jetzt auf die Betrachtung eines Systems versteifst, es aber generell beschreiben willst.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:35 Uhr.
|
 |