Announcement

Collapse
No announcement yet.

Foreign key nicht anlegbar obwohl Daten OK seind??

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

  • Foreign key nicht anlegbar obwohl Daten OK seind??

    Hallo zusammen,

    ich habe ein Problem mit Firebird 2.5 und der Erstellung eines FOREIGN KEY constraints. Obwohl die Daten passen bekomme ich die folgende Meldung:

    Code:
    violation of FOREIGN KEY constraint "FK_BOOKS_MEDIATYPE" on table "BOOKS"
    Foreign key reference target does not exist
    while executing:
    ALTER TABLE BOOKS ADD CONSTRAINT FK_BOOKS_MEDIATYPE 
      FOREIGN KEY (MEDIATYPE) REFERENCES MEDIATYPES
      (ID) 
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
    Ich habe nachgesehen, es gibt keine Sätez zu denen der entsprechende Datensatz in der Mediatypes-Tabelle nicht exitiert:

    Code:
    select b.mediatype, m.id from books b
    left outer join mediatypes m on (b.mediatype = m.id ) where m.id is null
    ergibt "no data found"

    Übersehe ich da irgendetws ganz selbstverständliches und stehe nur auf der Leitung??

    Gruß,
    Siegbert

  • #2
    Ich würde sagen, deine Kontrollabfrage ist nicht vollständig.
    Mach einfach auf beiden Tabellen ein Count(*) auf die zughörige ID. Wird ja nicht so viel sein und der Übeltäter wird wohl mit bloßem Auge zu finden sein.
    Ansonsten den Left Outer Join andersrum oder ein Full outer Join verwenden.
    Gruß, defo

    Comment


    • #3
      nein, so einfach ist es leider nicht. Die Abfrage habe ich ja gemacht, weil in allen BOOKS-Datensätzen eine 1 als Mediatype eingetragen ist und die ID 1 in Mediatypes existiert. Ich dachte nur ich übersehe was und habe daher versucht, über den Outer Join abzusichern.
      Auch ein select * from books where mediatype is null ergibt nicht ebenso select * from books where mediatype !=1

      Ich habe auf der selben Tabelle weitere foreign-key-constraints nach dem selben Muster, die ale das tun was sie sollen. Nur dieser eine will nicht...

      Code:
      ALTER TABLE BOOKS ADD CONSTRAINT FK_BOOKS_AUTHORS 
        FOREIGN KEY (AUTHORID) REFERENCES AUTHORS
        (ID) 
        ON DELETE NO ACTION
        ON UPDATE NO ACTION
      ;
      ALTER TABLE BOOKS ADD CONSTRAINT FK_BOOKS_PUBLISHERS 
        FOREIGN KEY (PUBLISHERID) REFERENCES PUBLISHERS
        (ID) 
        ON DELETE NO ACTION
        ON UPDATE NO ACTION
      ;
      ALTER TABLE BOOKS ADD CONSTRAINT FK_BOOKS_READERS 
        FOREIGN KEY (READERID) REFERENCES READERS
        (ID) 
        ON DELETE NO ACTION
        ON UPDATE NO ACTION
      ;
      ALTER TABLE BOOKS ADD CONSTRAINT FK_BOOKS_MEDIATYPE 
        FOREIGN KEY (MEDIATYPE) REFERENCES MEDIATYPES
        (ID) 
        ON DELETE NO ACTION
        ON UPDATE NO ACTION
      ;

      Comment

      Working...
      X