Ergebnis 1 bis 3 von 3

Thema: Problem mit Fremdschlüssel

  1. #1
    Avatar von progs
    progs ist offline Super-Moderator
    Registriert seit
    26.11.2005
    Ort
    Kulmbach, Bayern, Germany, 108121049209415, Kulmbach
    Beiträge
    185

    Standard Problem mit Fremdschlüssel

    Hallo,

    ich hab folgende DB-Struktur

    dw_karte
    -------------------
    karte_x
    karte_y
    tile_id

    dw_spieler
    -------------------
    spieler_id
    karte_x > Fremdschlüssel auf dw_karte/kate_x und karte_y
    karte_y |


    Wenn ich jetzt ein TRUNCATE TABLE dw_karte aussführen, erhalte ich folgende Fehlermeldung:

    Query failed: ERROR: cannot truncate a table referenced in a foreign key constraint DETAIL: Table "dw_spieler" references "dw_karte" via foreign key constraint "karte_xy". HINT: Truncate table "dw_spieler" at the same time. in /home/5458/www.dualwar.de/class/db.class.php on line 27
    ERROR: cannot truncate a table referenced in a foreign key constraint DETAIL: Table "dw_spieler" references "dw_karte" via foreign key constraint "karte_xy". HINT: Truncate table "dw_spieler" at the same time.
    Ich weiß, dass es am FK liegt, aber nicht wieso und wo genau das Problem liegt. Definition des FK:

    Code:
    ALTER TABLE dw_spieler
      ADD CONSTRAINT karte_xy FOREIGN KEY (karte_x, karte_y)
          REFERENCES dw_karte (karte_x, karte_y) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION;
    Ziel soll es sein, dass ich in die Spieler-Tabelle keine ungültigen Karten-Werte eintragen kann. Danke für euere Hilfe!
    Geändert von progs (25.09.2007 um 08:19 Uhr)

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von progs Beitrag anzeigen

    Wenn ich jetzt ein TRUNCATE TABLE dw_karte aussführen, erhalte ich folgende Fehlermeldung:


    Ziel soll es sein, dass ich in die Spieler-Tabelle keine ungültigen Karten-Werte eintragen kann. Danke für euere Hilfe!

    TRUNCATE geht nicht die Tabelle durch und prüft Zeile für Zeile, ob es FK-Verletzungen gibt, sondern erstellt die Tabelle quasi komplett neu (physisch als neue Datei) und wirft alle Informationen über die alte Tabelle weg.
    Möglicherweise ist dies in der Doku auch nicht sauber dokumentiert, aber IIRC kannst Du nur eine Tabelle TRUNCATEn, wenn Du auch die Tabellen mit TRUNCATE behandelst, die auf diese verweisen, und das in einem einzelnen Statement. Also: TRUNCATE table1, table2, table3;

    Falls Du das nicht willst, wirst Du DELETE verwenden müssen.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Avatar von progs
    progs ist offline Super-Moderator
    Registriert seit
    26.11.2005
    Ort
    Kulmbach, Bayern, Germany, 108121049209415, Kulmbach
    Beiträge
    185

    Standard

    Ok, vielen Dank! Muss ich mal schauen was für mich besser ist, Truncate oder Delete.

Ähnliche Themen

  1. Problem Fremdschlüssel auf abgeleitete Tabelle
    Von achilles_69 im Forum SQL
    Antworten: 2
    Letzter Beitrag: 12.08.2011, 08:36
  2. Antworten: 6
    Letzter Beitrag: 23.07.2010, 15:20
  3. Antworten: 10
    Letzter Beitrag: 09.12.2009, 16:44
  4. Fremdschlüssel und Vererbung
    Von beho im Forum SQL
    Antworten: 3
    Letzter Beitrag: 16.04.2007, 16:41
  5. Abfrage als Fremdschlüssel
    Von eremit im Forum Allgemeines
    Antworten: 4
    Letzter Beitrag: 20.02.2007, 10:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum