Announcement

Collapse
No announcement yet.

ForeignKey will nicht in SQL!

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

  • ForeignKey will nicht in SQL!

    Code:
    "CREATE TABLE Shopkategorie ("+
    				 "ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START
                                       WITH 0)PRIMARY KEY,"+
    				 "ShopkategorieName VARCHAR NULL,"+
    				 "ShopkategorieIcon VARCHAR NULL);";
    Danach die Shop-Tabelle:
    Code:
    CREATE TABLE Shop("+
    				  "ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START 
                                       WITH 0),"+
    				  "Shopkategorie_ID INTEGER REFERENCES 
                                        Shopkategorie(ID),"+
    				  "ShopName VARCHAR (20),"+
    				  "ShopIcon VARCHAR (20),"+
    				  "PRIMARY KEY(ID,Shopkategorie_ID));";
    Ich bekomme die Fehlermeldung:Unexpected token: REFERENCES in statement CREATE Shop.....

    Ich ahbe sie doch aber vorher erstellt?Wo ist der FEHLER??

  • #2
    Okay Porblem gelöst anscheinend, nun will er irgendwas anderes von mir bei einer anderen Tabelle:
    Code:
    "CREATE TABLE Benutzer_has_Shop("+
    		 		   "Benutzer_ID INTEGER NOT NULL,"+
    		 		   "Shop_Shopkategorie_ID INTEGER NOT NULL,"+
    		 		   "Shop_ID INTEGER NOT NULL,"+
    		           "FOREIGN KEY (Benutzer_ID)REFERENCES Benutzer(ID),"+
    		           "FOREIGN KEY (Shop_Shopkategorie_ID)REFERENCES Shop(Shopkategorie_ID),"+
    		           "FOREIGN KEY (Shop_ID)REFERENCES Shop(ID));";
    Fehler:"Primary or unique constraint required on main table: SHOP in DIESEM statement "

    Shopkategorie_ID ist Fremdschlüssel in der Shoptabelle, sage aber das er auch PK sein soll:

    Code:
    "CREATE TABLE Shop("+
    				  "ID INTEGER NOT NULL,"+
    				  "Shopkategorie_ID INTEGER NOT NULL,"+
    				  "ShopName VARCHAR (20),"+
    				  "ShopIcon VARCHAR (20),"+
    				  "PRIMARY KEY(ID,Shopkategorie_ID),"+
    				  "FOREIGN KEY (Shopkategorie_ID)REFERENCES Shopkategorie(ID));";
    Zuletzt editiert von mymel; 15.06.2010, 00:48.

    Comment


    • #3
      Hallo,

      solche Probleme hat men eben, wenn man zusammengesetzte Primärschlüssel verwendet. So etwas ist UNBEDINGT zu vermeiden.

      Eine Foreign Key-Beziehung erfordert einen eindeutigen Index auf der Mastertabelle. Dein Primärschlüssel ist aber nur in Bezug auf ID + Shopkategorie_ID eindeutig, während du versuchst den Foreign Key nur auf ID zu legen. Also entweder du legst für die Shop-Tabelle einen technischen PK mit nur einem Feld an (was der empfohlene Weg wäre) oder du definierst den Foreign Key ebenfalls über zwei Felder Shop_ID, Shop_Shopkategorie_ID => ID, Shopkategorie_ID (was dann die Murksvariante wäre).

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Dein Primärschlüssel ist aber nur in Bezug auf ID + Shopkategorie_ID eindeutig
        Was besonders zweckfrei ist, der ID ist eine Identity/Sequence und somit selbst eigentlich schon eindeutig und als technischer PK geeignet ist.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Es geht um eine Ansicht, in der es einen Shop gibt, man wählt daraus eine ShopKategorie und kommt in eine für diesen expliziten Shop davon, danach wählt man eine Warenkategorie nur für diesem Shop und dann wiederum Waren für diese Warenkategorie in diesem Shop der Shopkategorie.

          Wie sollte ich es sonst machen?

          Comment


          • #6
            Originally posted by mymel View Post
            ...Wie sollte ich es sonst machen?
            Schon gelesen!??
            Originally posted by Falk Prüfer View Post
            ...Also entweder du legst für die Shop-Tabelle einen technischen PK mit nur einem Feld an (was der empfohlene Weg wäre) oder du definierst den Foreign Key ebenfalls über zwei Felder Shop_ID, Shop_Shopkategorie_ID => ID, Shopkategorie_ID (was dann die Murksvariante wäre).
            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X