Announcement

Collapse
No announcement yet.

Alter Table und FOREIGN KEY REFERENCES

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alter Table und FOREIGN KEY REFERENCES

    Guten Tag
    Im Moment sollte ich gerade das DB Schema in Transact SQL Umsetzen. Aber das ist so mit Tücken behaftet. Frage: Wenn ich 2 Tabellen habe die mit der referenziellen Integrität verknüpft sind und ich mit folgendem Statement den FOREIGN KEY eintragen möchte erhalte ich eine Fehlermeldung.

    Statement:
    ALTER TABLE Logger ALTER COLUMN FSID_BenutzerID int not null FOREIGN KEY REFERENCES Benutzer(PK_BenutzerID)
    GO

    Fehlermeldung heisst es seien keine NOT NULL Werte zugelassen.

    Hat jemand eine Idee was ich falsch mache?

    Gruss Markus

  • #2
    Hallo,

    normalerweise legt man die Beziehungen der referenziellen Integrität bereits beim Anlegen der Tabellen fest (d.h. wenn die abhängige Tabelle noch völlig leer ist):
    <pre>
    <b>USE</b> tempdb
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>TABLE</b> MasterTbl
    (
    mid <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>IDENTITY</b> <b>PRIMARY</b> <b>KEY</b>,
    wert <b>VARCHAR</b>(9) <b>NOT</b> <b>NULL</b>
    )
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>TABLE</b> DetailTbl
    (
    did <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>IDENTITY</b> <b>PRIMARY</b> <b>KEY</b>,
    mid <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>REFERENCES</b> dbo.MasterTbl(mid)
    )
    <b>GO</b>
    </pre>
    Wenn der Femdschlüssel erst nachträglich hinzugefügt werden soll, erwartet der MS SQL Server die folgende Syntax:
    <pre>
    <b>USE</b> tempdb
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>TABLE</b> MasterTbl
    (
    mid <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>IDENTITY</b> <b>PRIMARY</b> <b>KEY</b>,
    wert <b>VARCHAR</b>(9) <b>NOT</b> <b>NULL</b>
    )
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>TABLE</b> DetailTbl
    (
    did <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>IDENTITY</b> <b>PRIMARY</b> <b>KEY</b>,
    mid <b>INTEGER</b> <b>NOT</b> <b>NULL</b>
    )
    <b>GO</b>
    <br>
    <b>ALTER</b> <b>TABLE</b> DetailTbl <b>ADD</b> <b>FOREIGN</b> <b>KEY</b> (mid) <b>REFERENCES</b> MasterTbl(mid)
    <b>GO</b>
    </pre&gt

    Comment


    • #3
      Hallo,
      Vielen Dank es hat geklappt. Meine Ueberlegung war die das ich zuerst die Tabellen anlege und dann die PK und FK, weil ich dann die Reihenfolge der Tabellen nicht habe.

      Gruss Markus Nünlis

      Comment

      Working...
      X