Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [MySql] problemi di cancellazione

    Salve non riesco a capire perchè non cancella i bug segnalati dai privati che sono stati cancellati

    la struttura delle tabelle è questa


    create table PRIVATO(
    Nome varchar(50) default "NonImmesso",
    Cognome varchar(50) default "NonImmesso",
    Email varchar(50),
    nmbug int,
    primary key (Email));


    create table SEGNALAP(
    Email varchar(50),
    CodiceBUG int,
    primary key (Email,CodiceBug));


    create table BUG(
    Codice int auto_increment ,
    Descrizione text(200) not null,
    Stato enum("Non Risolto","In Risoluzione") default "Non Risolto",
    primary key(Codice));


    ALTER TABLE SEGNALAP ADD
    foreign key (Email) references PRIVATO (Email) on delete cascade on update cascade;
    ALTER TABLE SEGNALAP ADD
    foreign key (CodiceBug) references BUG (Codice) on delete cascade on update cascade;
    Agos

  2. #2
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Lo script per la cancellazione? Come la effettui?

  3. #3
    delete from privato where nome = "Agostino";




    Agostino è un privato che ha segnalato il bug

    quindi come penso io mettendo on delete cascade dovrebbe cancellare anche la segnalazione e di conseguenza il bug segnalato.
    o mi sbaglio?
    Agos

  4. #4
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    In realtà dovresti aver attivato il motore InnoDB (vedi questo articolo). Dovrebbe essere spiegato abbastanza bene quello che serve. Di solito MySQL usa di default il motore MyISAM che non "supporta" on cascade...

  5. #5
    ciao, ma se faccio tramite java queste operazioni mi succede la stessa cosa?

    e poi la sintassi è corretta?
    Agos

  6. #6
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Il problema non è il linguaggio che usi per interfacciarti con MySQL: potrebbe essere Java, C#, C++, PHP, ASP...quello che vuoi; il problema è nel motore del DBMS stesso; InnoDB "fa parte" di MySQL, quindi va attivata direttamente sul DBMS; sicuramente se provi a fare un export del DB ti accorgerai di una cosa del genere:

    codice:
    CREATE TABLE `my_table` (
      ...
      ...
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    E' la prima volta che sono di fronte a questo problema, ma credo che sostituendo MyISAM con InnoDB il tutto dovrebbe andare...credo si possa fare anche con PhpMyAdmin...

  7. #7
    Ho provato su tutte le tabelle del progetto a mettere alla fine la stringa
    ENGINE=InnoDb DEFAULT CHARSET=latin1
    come hai detto tu è funziona bene, ma non capisco perchè sulle tabelle privato,segnalap,e bug funziona a metà.

    C'è da dire che sono le uniche due tabelle con relazione M:N e quindi c'è segnalaP


    comunque se cancello i bug si cancellano tutte le segnalazioni che fanno riferimento a quei bug ma il privato che l'ha segnalato rimane nella tabella

    se cancello i privati si cancellano tutte le segnalazioni ma non i bug;

    se cancello le segnalazioni, i bug ed i privati rimangono.
    Agos

  8. #8
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Originariamente inviato da agostinomiranda
    C'è da dire che sono le uniche due tabelle con relazione M:N e quindi c'è segnalaP
    Come hai realizzato questa relazione M:N? Con le tabelle, intendo...Puoi farmi un export delle tabelle coinvolte e postarlo, pls?

  9. #9
    come faccio Export?

    Le tabelle coinvolte che non funzionano bene sono quelle del messaggio iniziale, e a queste tabelle ho inserito la stringa citata prima cioè ENGINE=InnoDb DEFAULT CHARSET=latin1;


    SEGNALAP è la relazione

    Il privato segnala 1 o piu bug 1-N
    Un Bug può essere segnalato da 1 o più clienti 1-N

    quindi facendo il mapping

    PRIVATO(Email, Nome, NmBug, Cognome)
    BUG(Codice , Descrizione, Stato)
    SEGNALAP (Email*, CodiceBug*)

    Email di privato chiave primaria
    Codice di bug chiave primaria
    email+codicebug di segnalap chiavi primarie
    Agos

  10. #10
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Export è nel menù dove hai mostra, svuota, operazioni...ecc...ok, lo schema delle tabelle mi sembra ok...ora che script usi? Vedi che ogni tabella sulla FK deve avere ON CASCADE DELETE...

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.