egosumquisum
Neuer Benutzer
- Beiträge
- 2
Arbeite gerade einen Kurs durch in dem folgendes erstes konkretes SQL Beispiel auftritt und habe bereits 2 Tage vergeblich damit verschwendet eine Datenbank zu finden die die Tabelle so anlegt wie es laut Codebeschreibung sein sollte :
CREATE TABLE Personal(
Persnr INT PRIMARY KEY,
Name CHAR(25) NOT NULL,
Ort CHAR(15),
Vorgesetzt SMALLINT REFERENCES Personal
ON DELETE SET NULL
ON UPDATE CASCADE,
.........................
1.
Da in meinem Kurs allgemein Datenbanken behandelt werden ist leider keine konkrete Datenbank zum durcharbeiten der Beispiele genannt.
Für welche SQL Datenbank ist dieser Syntax ?
MySQL(mit gesetztem ANSI-SQL Schalter) meckert zwar seltsamerweise nicht, legt hier aber ,laut Tabelleninspektor des "MySQL Query Browsers" ,(in dem ich den Code als Skript teste) keinen Fremdschlüssel für "Vorgesetzt" an
und so werden auch die gestetzten Eigenschaften ON DELETE und ON UPDATE nicht übernommen.(Laut meinem KursSkript soll "Vorgesetzt" ein Fremdschlüssel sein der sich auf den Primärschlüssel der eigenen Relation bezieht)
Lediglich Folgendes funktioniert bei mir in MySQL um diese Beziehung wie gewünscht zu modellieren(und nur wenn der Typ des referenzierten Fremdschlüssels identisch ist) :
FOREIGN KEY (Vorgesetzt) REFERENCES Personal(Persnr)
Ist MySQL(Verison 5.1) zum Durcharbeiten des Beipiels geeignet ?
Welchem SQL Standard entspricht der im Kurs verwendete SQL-Code ?
2.
Kann Vorgesetzt nicht jeden def. Schlüsselwert von "Personal(Persnr)" annehmen?Wieso ist der Typ hier SMALLINT obwohl in "Personal(Persnr)" Integer Werte stehen könnten?
Nachtrag :
Habe das oben angeführte gegebene Beispiel nun als Skript mit SQL Server Management Studio auf einem SQL Server 2005 Express getestet. Erstmal wurde (wie ich mir dachte) der Datentyp moniert (da Datentyp des referenzierten Attributs nicht dem des referenzierendem
entspricht). Gut OK dachte ich , vieleicht ein kleiner Fehler in dem Kurs ,also hab ich beide Typen konform zu INT gemacht...
Allerdings meckert SQL Server Management Studio schon wieder wegen der Angabe der Einschränkungen für den Fremdschlüssel :
Meldung 1785, Ebene 16, Status 0, Zeile 3
Das Einführen der FOREIGN KEY-Einschränkung 'FK__Personal__Vorges__1B0907CE' für die 'Personal'-Tabelle kann Schleifen oder mehrere Kaskadepfade verursachen. Geben Sie ON DELETE NO ACTION oder ON UPDATE NO ACTION an, oder ändern Sie andere FOREIGN KEY-Einschränkungen.
Meldung 1750, Ebene 16, Status 0, Zeile 3
Die Einschränkung konnte nicht erstellt werden. Siehe vorherige Fehler.
Doch kein Code für MS SQL Server ???? Oder meckert hier nur SQL Server Management Studio??
Gibts dann vieleicht ne IDE und/oder nen anderen Server die bei diesem CodeBeispiel nicht meckern ,oder ist das Beispiel einfach nur falsch ??
Danke im Vorraus für eure Zeit und schnelle Hilfe !
CREATE TABLE Personal(
Persnr INT PRIMARY KEY,
Name CHAR(25) NOT NULL,
Ort CHAR(15),
Vorgesetzt SMALLINT REFERENCES Personal
ON DELETE SET NULL
ON UPDATE CASCADE,
.........................
1.
Da in meinem Kurs allgemein Datenbanken behandelt werden ist leider keine konkrete Datenbank zum durcharbeiten der Beispiele genannt.
Für welche SQL Datenbank ist dieser Syntax ?
MySQL(mit gesetztem ANSI-SQL Schalter) meckert zwar seltsamerweise nicht, legt hier aber ,laut Tabelleninspektor des "MySQL Query Browsers" ,(in dem ich den Code als Skript teste) keinen Fremdschlüssel für "Vorgesetzt" an
und so werden auch die gestetzten Eigenschaften ON DELETE und ON UPDATE nicht übernommen.(Laut meinem KursSkript soll "Vorgesetzt" ein Fremdschlüssel sein der sich auf den Primärschlüssel der eigenen Relation bezieht)
Lediglich Folgendes funktioniert bei mir in MySQL um diese Beziehung wie gewünscht zu modellieren(und nur wenn der Typ des referenzierten Fremdschlüssels identisch ist) :
FOREIGN KEY (Vorgesetzt) REFERENCES Personal(Persnr)
Ist MySQL(Verison 5.1) zum Durcharbeiten des Beipiels geeignet ?
Welchem SQL Standard entspricht der im Kurs verwendete SQL-Code ?
2.
Kann Vorgesetzt nicht jeden def. Schlüsselwert von "Personal(Persnr)" annehmen?Wieso ist der Typ hier SMALLINT obwohl in "Personal(Persnr)" Integer Werte stehen könnten?
Nachtrag :
Habe das oben angeführte gegebene Beispiel nun als Skript mit SQL Server Management Studio auf einem SQL Server 2005 Express getestet. Erstmal wurde (wie ich mir dachte) der Datentyp moniert (da Datentyp des referenzierten Attributs nicht dem des referenzierendem
entspricht). Gut OK dachte ich , vieleicht ein kleiner Fehler in dem Kurs ,also hab ich beide Typen konform zu INT gemacht...
Allerdings meckert SQL Server Management Studio schon wieder wegen der Angabe der Einschränkungen für den Fremdschlüssel :
Meldung 1785, Ebene 16, Status 0, Zeile 3
Das Einführen der FOREIGN KEY-Einschränkung 'FK__Personal__Vorges__1B0907CE' für die 'Personal'-Tabelle kann Schleifen oder mehrere Kaskadepfade verursachen. Geben Sie ON DELETE NO ACTION oder ON UPDATE NO ACTION an, oder ändern Sie andere FOREIGN KEY-Einschränkungen.
Meldung 1750, Ebene 16, Status 0, Zeile 3
Die Einschränkung konnte nicht erstellt werden. Siehe vorherige Fehler.
Doch kein Code für MS SQL Server ???? Oder meckert hier nur SQL Server Management Studio??
Gibts dann vieleicht ne IDE und/oder nen anderen Server die bei diesem CodeBeispiel nicht meckern ,oder ist das Beispiel einfach nur falsch ??
Danke im Vorraus für eure Zeit und schnelle Hilfe !