Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 21.09.2007, 19:17   #1
TP-Member
 
Benutzerbild von fraggle
 
Registriert seit: Jan 2003
Ort: Piesbach
fraggle macht alles soweit korrekt

[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
__________________
~
fraggle ist offline   Mit Zitat antworten


Alt 22.09.2007, 15:17   #2
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
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
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 22.09.2007, 15:58   #3
TP-Member
 
Benutzerbild von fraggle
 
Registriert seit: Jan 2003
Ort: Piesbach
fraggle macht alles soweit korrekt
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
__________________
~
fraggle ist offline   Mit Zitat antworten
Alt 22.09.2007, 16:07   #4
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
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.
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 22.09.2007, 16:28   #5
TP-Member
 
Benutzerbild von fraggle
 
Registriert seit: Jan 2003
Ort: Piesbach
fraggle macht alles soweit korrekt
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
__________________
~
fraggle ist offline   Mit Zitat antworten
Alt 22.09.2007, 16:43   #6
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
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.
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[SQL] Foreign Key - Bedingung wird ignoriert [SQL] Foreign Key - Bedingung wird ignoriert
« Benutzer löschen/bannen (Sessions) | PHP von HTML trennen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:35 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67