2012-03-28 15 views
29

quindi sto lavorando su alcune tabelle e ci sono alcuni incoerenze tra i dati ... Una o due tabelle hanno un vincolo di chiave esterna su un particolare tavolo (chiamalo tabella X) , ma quella tabella ha più righe con la colonna chiave esterna.MySQL: cancella una riga ignorando il vincolo di chiave esterna

Quello che voglio fare è rimuovere le righe duplicate nella tabella X, ma il vincolo di chiave esterna mi impedisce di farlo. C'è un modo per forzare l'eliminazione delle righe ignorando il vincolo della chiave esterna poiché so cosa sto facendo?

+1

essere consapevoli che si può rovinare il vostro DB durante l'utilizzo foreign_key_checks SET = 0 Usalo solo se sai esattamente quale sarà il risultato. Lo uso solo per il mio script di backup php. – DevWL

+0

Ovviamente, farlo sarà pericoloso e lo userò solo quando so esattamente cosa sto facendo. –

risposta

88

SET foreign_key_checks = 0

che impedirà MySQL da controllare chiavi esterne. Assicurati di reimpostarlo su 1 quando hai finito.

Inoltre, si può sempre cadere la chiave esterna e quindi aggiungere in un secondo momento se si voleva interessare solo una singolare chiave

ALTER TABLE t DROP FOREIGN KEY fk

+0

Grazie è comodo :) –

+2

Immagino che non sia necessario impostare il controllo della chiave esterna su 1 se si sta effettuando il logout immediato della sessione. – dewd

+0

Ho più tabelle quindi voglio cancellare questo campo da tutte le tabelle, quindi come posso fare questo. questo non funzionerà – karan

Problemi correlati