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

    [MySql]DELETE CASCADE da query

    Ciao a tutti!

    Ho un po' di tabelle collegate da foreign keys. Alle operazioni di DELETE e UPDATE ho lasciato le impostazioni di default (che per phpmyadmin dovrebbero essere "RESTRICT"). In questo modo mi guardo le spalle dalla cancellazione di record genitori che sono ancora collegati a dei record figli.
    Il mio problema è il seguente:
    se io volessi comunque effettuare una cancellazione a cascata, devo per forza cambiare le impostazioni delle foreign keys o posso forzare la cosa direttamente tramite query?
    Io da phpmyadmin ho provato a fare un query del genere:

    DELETE CASCADE FROM tabella WHERE id = numero_id

    ma continua a darmi errori.
    Qualcuno di voi potrebbe darmi una mano?

    GRAZIE

    CIAU CIAU
    Se la vita ti sorride, ti sta prendendo per il cul0

  2. #2
    per modificare / eliminare una foreign key devi avere il reference.

    Se non lo hai dato alla creazione ne viene imposto uno di default. lo puoi trovare con show create table oppure con show tables status

    Se hai phpmyadmin ultima versione, per le tabelle InnoDB trovi la voce "vedi relazioni" nel menu presentato da "struttura". Con questo tool la cosa diventa di una semplicita' estrema. clikka sul select e imposti la voce che ti serve.

    Con la query dovrai comunque usare ALTER TABLE...

    il link al manuale

    http://dev.mysql.com/doc/mysql/en/in...nstraints.html


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

  3. #3
    Prima di tutto grazie per la risposta!

    Allora, le relazioni le ho già impostate. Ho fatto due tabelle di prova.
    La prima tabella ha due campi:
    un campo ID impostatata a chiave primaria autoincrementante
    un campo DESCRIZIONE che contiene del testo.

    La seconda tabella ha 3 campi:
    un campo ID impostatata a chiave primaria autoincrementante
    un campo DESCRIZIONE che contiene del testo.
    un campo ID_TAB1 che una chiave indice e su cui ho impostato la relazione con il campo ID della prima tabella.

    In questa maniera se io tento di cancellare un record della prima tabella che è collegato ad almeno un record della seconda tabella la query non viene eseguita e mi ritorna un errore che mi dice che la query non può essere eseguita perchè viola un limite di integrità.
    Questa cosa a me sta bene.

    Io speravo, comunque, che tramite query fosse possibile forzare un DELETE CASCADE senza modificare le COSTRAINTS, ma a quanto mi dici, credo che non si possa fare.

    CIAU CIAU
    Se la vita ti sorride, ti sta prendendo per il cul0

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.