Visualizzazione risultati 1 fino 5 di 5

Discussione: vincoli di chiave non funzionano

  1. #1
    Guest

    Predefinito vincoli di chiave non funzionano

    supponiamo di avere le seguenti tabelle

    create table post(
    id int primary key,
    titolo varchar(20),
    testo text,
    data date,
    ora time,
    qualità numeric(3,1),
    categoria varchar(15)
    ) engine=INNODB;

    create table commento(
    id int primary key auto_increment,
    testo text,
    data date,
    ora time,
    id_post int,
    foreign key (id_post) references post(id) on delete cascade
    ) engine=INNODB;

    così come le ho strutturate (secondo gli standard sql) se io andassi a cancellare una tupla dalla tabella post, si dovrebbe cancellare qualsiasi altra tupla della tabella commento che faccia rferimento alla tupla di post cancellata (visto che ho scritto on delete cascade!!!). perché sul db mysql di altervista questo non funziona? sulle query ovviamente non mi dà errori di sintassi ma il dbms non rispetta i miei vincoli !??
    grazie a tutti voi che mi saprete aiutare!

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    In teoria non dovresti essere nemmeno riuscito a creare le tabelle, visto che AlterVista non supporta il motore InnoDB...

    Ammettendo che AV te le abbia automaticamente implementate col motore MyISAM, una limitazione di quest'ultimo è che non implementa le chiavi esterne (pur traducendo correttamente le query): quindi non solo non funziona il tuo caso, ma potresti pure assegnare a commento.id_post dei valori non presenti in post.id...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    quindi su altervista non ho modo di far rispettare i vincoli di integrità direttamente nella ddl??....

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Esattamente... le dichiarazioni delle foreign key vengono interpretate (e per questo non ti causano errori di sintassi), ma non realmente implementate.

    Confonta qui le singole prestazioni dei diversi engine: http://dev.mysql.com/doc/refman/4.1/...e-engines.html

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    L'avatar di zingus
    zingus non è connesso Utente giovane
    Data registrazione
    02-09-2003
    Messaggi
    83

    Predefinito

    In generale, FYI, le foreign key sono oramai viste in molti ambiti come un eccesso di zelo poiché:

    1) Rallentano mostruosamente gli inserimenti e le cancellazioni massicce di dati

    2) Sono vincoli che COMUNQUE vanno reimplementati nella logica di controllo del sistema per fornire agli utenti una diagnostica decente, utenti a cui il semplice messaggio ritornato dalla engine SQL farebbe (giustamente) incrociare gli occhi.

    In generale usare troppe feature di sql in un programma od uno script non è troppo saggio, gli standard sono implementati a macchia di leopardo da tutti i distributori di database, anche quelli più costosi, e la comunicazione tra il programma e la engine non mai state tra le più soddisfacenti.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •