none
Errore in cancellazione tabella RRS feed

  • Domanda

  • Ciao a tutti.

    Sto tentando di cancellare da un DB una tabella,  come mi è stato richiesto e autorizzato.

    Quando tento di fare la drop, mi appare l'errore seguente: 

    Tentando di cancellare prima l'indice , trovo il "delete" disabilitato. 

    C'è sicuramente, se non ho capito male, un collegamento tra chiavi di altre tabelle (FOREIGN KEY Constraint) o viceversa . Mi aiutereste a capire il motivo di questo blocco e come fare a cancellare questa tabella ? 

    Grazie in anticipo.


    Hunternet


    • Modificato HunterNet79 mercoledì 15 novembre 2017 14:12
    mercoledì 15 novembre 2017 14:07

Risposte

  • Ciao,

    L'errore indica appunto che esistono una o più tabelle i cui campi hanno un vincolo di FOREIGN KEY con quello della tabella che stai cancellando. Prima di poterla eliminare è necessario quindi eseguire uno script che elimini il constraint di foreign key sulle tabelle per le quali dipendono. Lo script sarà della forma:

    ALTER TABLE Tabella
    DROP CONSTRAINT NomeDelConstraintDiForeignKey;

     

    A presto,

    Gabriele


    • Modificato Gabriele Etta mercoledì 15 novembre 2017 15:16
    • Contrassegnato come risposta HunterNet79 mercoledì 15 novembre 2017 15:54
    mercoledì 15 novembre 2017 15:15
  • Ciao,

    Puoi lanciare la Store Procedure sp_help:

    EXEC sp_help 'NomeTabellaCheVoleviEliminareInizialmente'

    Ti ritornerà una serie di informazioni relative alla tabella e, in fondo, un result set contenente la colonna Table is referenced by foreign key i cui record mostreranno tutte le tabelle con il relativo vincolo di FK su quella per cui hai lanciato la SP.

    A presto,

    Gabriele


    mercoledì 15 novembre 2017 15:47

Tutte le risposte

  • Ciao,

    L'errore indica appunto che esistono una o più tabelle i cui campi hanno un vincolo di FOREIGN KEY con quello della tabella che stai cancellando. Prima di poterla eliminare è necessario quindi eseguire uno script che elimini il constraint di foreign key sulle tabelle per le quali dipendono. Lo script sarà della forma:

    ALTER TABLE Tabella
    DROP CONSTRAINT NomeDelConstraintDiForeignKey;

     

    A presto,

    Gabriele


    • Modificato Gabriele Etta mercoledì 15 novembre 2017 15:16
    • Contrassegnato come risposta HunterNet79 mercoledì 15 novembre 2017 15:54
    mercoledì 15 novembre 2017 15:15
  • Grazie tante della risposta.

    A questo punto, essendo molte nel DB, avrei necessità di avere la lista delle tabelle coinvolte ... non sono riuscito a trovare niente che faccia al caso mio ...  se non dal "Design" di Management Studio -> "RELATIONSCHIP" ?!? Esiste un comando ? 

    Grazie ancora.

     


    Hunternet

    mercoledì 15 novembre 2017 15:39
  • Ciao,

    Puoi lanciare la Store Procedure sp_help:

    EXEC sp_help 'NomeTabellaCheVoleviEliminareInizialmente'

    Ti ritornerà una serie di informazioni relative alla tabella e, in fondo, un result set contenente la colonna Table is referenced by foreign key i cui record mostreranno tutte le tabelle con il relativo vincolo di FK su quella per cui hai lanciato la SP.

    A presto,

    Gabriele


    mercoledì 15 novembre 2017 15:47
  • Esattamente! grazie!

    E quindi poi dovrei andare , tabella per tabella, a lanciare il "DROP CONSTRAINT ".

    PERFETTO! Grazie ancora .


    Hunternet

    mercoledì 15 novembre 2017 15:54