Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    129

    [Mysql] problema su Foreign Key

    Salve a tutti. Ho una tabella con dentro 2 dati che sono foreign key di altre 2 tabelle. Come faccio a fare la foreign key? Ma devo usare anche INDEX, cos è?


    Ho fatto così:

    codice:
    CREATE TABLE `Vendita` (   `id_vendita` integer unsigned NOT NULL auto_increment,   
    `libro` integer unsigned NOT NULL,   
    `seller` integer unsigned NOT NULL,   
    `prezzo` double unsigned NOT NULL,   
    `commento` varchar(200),   
    `isbn` integer NOT NULL,   
    `data` date NOT NULL,   
    `edizione` integer,   
    `lingua` integer unsigned NOT NULL,  
     `condizione` integer unsigned NOT NULL,   
    `eta` integer unsigned NOT NULL,   
    `formato` integer unsigned NOT NULL,   
    `copertina` integer unsigned,   
    `soggetto` integer unsigned,   
    PRIMARY KEY  (`id_vendita`),  
    FOREIGN KEY (libro) REFERENCES Book(id_book)     ON DELETE CASCADE     ON UPDATE CASCADE,  
    FOREIGN KEY (seller) REFERENCES Seller(id_seller)     ON DELETE CASCADE     ON UPDATE CASCADE, 
    FOREIGN KEY (lingua) REFERENCES Language(id_language)     ON DELETE CASCADE     ON UPDATE CASCADE,  
    FOREIGN KEY (condizione) REFERENCES Condition(id_condition)     ON DELETE CASCADE     ON UPDATE CASCADE,  
    FOREIGN KEY (eta) REFERENCES Age(id_age)     ON DELETE CASCADE     ON UPDATE CASCADE,  
    FOREIGN KEY (formato) REFERENCES Format(id_format)     ON DELETE CASCADE     ON UPDATE CASCADE,  
    FOREIGN KEY (copertina) REFERENCES Binding(id_binding)     ON DELETE CASCADE     ON UPDATE CASCADE,  
    FOREIGN KEY (soggetto) REFERENCES Subject(id_subject)     ON DELETE CASCADE     ON UPDATE CASCADE )
    Mi da errore purtroppo e non so perchè...chi mi aiuta???

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    129
    l'errore è questo:

    [localhost] ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Condition(id_condition)
    ON DELETE CASCADE
    ON UPDATE CASC

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    129
    up

  4. #4
    Se nella query SQL non lo specifichi, MySQL crea le tabelle con MyISAM come Storage Engine... il quale però non supporta la foreign keys.
    Devi perciò specificare che vuoi utilizzare InnoDB.

    codice:
    CREATE TABLE t (x INT, y TEXT) ENGINE = InnoDB;
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    129
    L'ho messo in fondo alla mia tabella, ma non funziona lo stesso...

  6. #6
    In apertura di thread parlavi di un errore.
    Quale???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Originariamente inviato da Mitttico
    l'errore è questo:

    [localhost] ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Condition(id_condition)
    ON DELETE CASCADE
    ON UPDATE CASC
    CONDITION e' una parola riservata di mysql. Cambia il nome di quella tabella oppure mettila tra backtick ... ma e' meglio se usi un'altro nome.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    129
    Grazie mille!!!! Era proprio Condition che non gli andava giu'



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.