+ Rispondi alla Discussione
Risultati da 1 a 5 di 5

Problema MYSQL e vincoli di integrità referenziali

Ultimo Messaggio di sakurambo777 il:
  1. #1
    User Newbie
    Data Registrazione
    May 2007
    Messaggi
    4

    Problema MYSQL e vincoli di integrità referenziali

    Salve, spero che qulacuno possa aiutarmi con il mio problema.
    Ho creato 2 tabelle con vincoli referenziali il cui codice posto qui sotto:


    DROP TABLE IF EXISTS `materials_submitted`;
    CREATE TABLE `materials_submitted` (
    `id` tinyint(4) unsigned NOT NULL auto_increment,
    `code` varchar(4) NOT NULL default '',
    `name` varchar(60) NOT NULL default '',
    `journal` varchar(60) default NULL,
    `volume` varchar(20) default NULL,
    `number` varchar(20) default NULL,
    `pages` varchar(20) default '0',
    `authors` varchar(60) NOT NULL default '',
    `publisher` varchar(50) default NULL,
    `index_terms` tinytext NOT NULL,
    `book_series` varchar(90) default NULL,
    `abstract` tinytext,
    `file` varchar(255) default NULL,
    `link` varchar(255) default NULL,
    PRIMARY KEY (`id`),
    INDEX IdNameIndex (authors),
    INDEX IdNameJMIndex (name)
    ) ENGINE=INNODB;


    DROP TABLE IF EXISTS `authors_temp`;
    CREATE TABLE `authors_temp` (
    id_temp tinyint(4) unsigned NOT NULL auto_increment,
    name_authors varchar(60) NOT NULL default '',
    name_JM varchar(60) NOT NULL default '',
    affiliation varchar(120),
    contact varchar(120),
    PRIMARY KEY (`id_temp`,name_JM,name_authors),
    INDEX IdNameIndex (name_authors),
    INDEX IdNameJMIndex (name_JM),
    FOREIGN KEY(name_authors) REFERENCES materials_submitted(authors) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(name_JM) REFERENCES materials_submitted(name) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE = INNODB ;

    Il mio problema è il seguente:dovrei poter inserire nella tabella materials_submitted vari record anche con il campo authors uguale.
    Quando inserisco 2 o piu record con campo authors sempre diverso, non ci sono problemi, i vincoli referenziali funzionano perfettamente anche quando rinomino il campo name_authors (della tabella authors_temp) con valori uguali.
    Il problema lo ho quando inserisco per esempio due o piu record con il campo authors uguale ,per esempio è sempre authors="pippo".Quando poi esempio effettuo l'update di un record con il campo authors="pippo", mi aggiorna anche il campo authors di tutti ir ecord che hanno authors="pippo".
    IO invece voglio che solo il campo authors del record selezionati da me sia ggiorni.
    Non so se sono stato abbastanza chiaro.Qualcuno sa cosa posso fare per risolvere il problema???
    Grazie

  2. #2
    Utente Premium L'avatar di InuYaksa
    Data Registrazione
    Oct 2006
    Messaggi
    119
    Oltre ad author hai bisogno di un'altra informazione che leghi l'autore ad uno o più materiali inviati.

    Devi inserire un nuovo campo in authors_temp dove memorizzare anche il "gruppo" di invio, che server a legare a quel particolare record 1 o più righe di materiali. Lo stesso campo va creato in materials_submitted.

    Ora la chiave non è più solo author, ma diventà author + gruppo.

    In questo modo cambiando l'author di un gruppo specifico il sistema aggiornerà solo le righe collegate presenti in materials_submitted.

    Di conseguenza dovrai cambiare:
    FOREIGN KEY(name_authors) REFERENCES materials_submitted(authors) ON DELETE CASCADE ON UPDATE CASCADE

    in

    FOREIGN KEY(name_authors, group_authors) REFERENCES materials_submitted(authors,groups) ON DELETE CASCADE ON UPDATE CASCADE

  3. #3
    User Newbie
    Data Registrazione
    May 2007
    Messaggi
    4
    Ma a me serve il contrario, cioè quando cambio l'author di materials_submitted deve aggiornare solo le righe o la riga presente in author_temp.
    é lo stesso?
    E poi non ho ben capito il nuovo campo group cosa dovrebbe contenere?
    I

  4. #4
    User Newbie
    Data Registrazione
    May 2007
    Messaggi
    4
    Rettifico;
    Ma a me serve il contrario, cioè quando cambio l'author di materials_submitted deve aggiornare la riga(solo la riga) presente in author_temp.
    é lo stesso?

  5. #5
    User Newbie
    Data Registrazione
    May 2007
    Messaggi
    4
    Problema ,risolto.In realtà il campo group che tu mi hai consigliato di aggiungere celo avevo già, è il campo id.
    Ora tutto funziona.Grazie e ciao

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.