Announcement

Collapse
No announcement yet.

Foreign Key - Primary Key

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

  • Foreign Key - Primary Key

    Hallo Leute,

    bezüglich dem Verbinden von Tabellen habe ich eine Frage. In 2 Relationen taucht das Attribut Kundennummer auf. Wenn ich dieses Attribut in jeder der beiden Tabellen als PrimaryKey festlege, kann ich dann über diesen die Tabellen verbinden ? Oder muss Kundennummer einmal Primary key und einmal foreign key sein ? Und mit welchem Befehl füge ich einer Tabelle einen Foreign KEy hinzu ?
    Vielen Dank im voraus.
    Mfg Niq

  • #2
    Hallo,

    der Primärschlüssel einer Tabelle kann gleichzeitig auch als Fremdschlüssel deklariert werden. Das folgende Beispiel demonstriert die Alternative REFERENCES:

    Code:
    USE tempdb
    GO
    
    CREATE TABLE TblA
    (
      kdnnr INT        NOT NULL PRIMARY KEY,
      kunde VARCHAR(9) NOT NULL
    )
    GO
    INSERT INTO TblA VALUES (1,'Kunde A');
    GO
    
    CREATE TABLE TblB
    (
      kdnnr       INT NOT NULL PRIMARY KEY REFERENCES TblA(kdnnr),
      kontonummer INT NOT NULL
    )
    GO
    INSERT INTO TblB VALUES (1,2744123);
    GO
    -- Fremdschlüssel testen: Veto durch den SQL Server
    INSERT INTO TblB VALUES (2,2744123);
    GO
    Eine weitere Alternative steht mit dem nachträglichen Hinzufügen eines CONSTRAINT ... FOREIGN KEY REFERENCES ... zur Verfügung.

    Comment


    • #3
      Hallo,

      Danke für deine Hilfe. Mit den Schlüsseln hat es geklappt. Mit Veto durch SQL-Server meinst du doch dass er sich bei dem von dir vorgeschlagenen Befehl sträuben müsste oder ? allerdings funktioniert dieser BEfehl einwandfrei, allerdings habe ich eben andere Attribute und Tupel in meinen Tabellen.
      Danke für eine umgehende Antwort.
      MFG NIQ

      Comment


      • #4
        Hallo,

        da in meinem Beispiel der 2. INSERT-Aufruf den Fremdschlüsselwert 2 einfügen will, der allerdings nicht als Primärschlüssel in der anderen Tabelle steht, führt der SQL Server die INSERT-Anweisung nicht aus.

        Comment

        Working...
        X