none
Update di colonne in tabelle linkate RRS feed

  • Domanda

  • Ciao a tutti. Dovrei modificare una colonna che fa indice, di una tabella collegata ad un'altra in referential integrity. In pratica è la data documento che linka la testa_doc con le righe. Naturalmente è impossibile, ma in altri motori esiste un'isruzione "set refintcheck off" che disabilita momentaneamente l'integrità referenziale, per consentire modifiche di questo tipo. Poi si rimette tutto a posto con "set refintcheck on". In sqlserver 2008 express esiste qualcosa del genere senza droppare e ricreare tutti gli indici?

    Grazie.

    martedì 5 ottobre 2010 14:19

Risposte

Tutte le risposte

  • Ciao a tutti. Dovrei modificare una colonna che fa indice, di una tabella collegata ad un'altra in referential integrity. In pratica è la data documento che linka la testa_doc con le righe. Naturalmente è impossibile, ma in altri motori esiste un'isruzione "set refintcheck off" che disabilita momentaneamente l'integrità referenziale, per consentire modifiche di questo tipo. Poi si rimette tutto a posto con "set refintcheck on". In sqlserver 2008 express esiste qualcosa del genere senza droppare e ricreare tutti gli indici?

    Ciao,

    Forse non ho capito bene, vuoi modificare il data type di una colonna impiegata nella definizione di un constraint foreign key?

    Puoi postare un esempio semplificato con i comandi di CREATE TABLE delle due tabelle?

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    martedì 5 ottobre 2010 19:05
    Moderatore
  • Ciao. Non il data type. IN pratica dovrei cambiare la data dei documenti. La table testa_doc ha una chiave che è fatta da data_doc e n_doc la quale chiave serve da link con la table righe . Essendoci integrità referenziale non la posso modificare. Volevo solo sapere se esiste un modo per interrompere momentaneamente la ref. integrity, modificare le date nelle due tabelle e poi rimetterla, senza dover droppare gli indici e tutti i constraints.

    Altrimenti dovrei creare due tabelle identiche a quelle originali, travasare i dati, azzerare le table i partenza e ritrasferire tutto dopo aver modificato le date sia in testa che in righe. Massa longo (troppo lungo).

     

    venerdì 8 ottobre 2010 10:45
  • Volevo solo sapere se esiste un modo per interrompere momentaneamente la ref. integrity, modificare le date nelle due tabelle e poi rimetterla, senza dover droppare gli indici e tutti i constraints.


    Puoi utilizzare il comando ALTER TABLE <schema>.<tabella> NOCHECK CONSTRAINT <nome constraint FK>; per disabilitare il constraint FK. Maggiori info sui BOL.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta Anca Popa giovedì 2 dicembre 2010 19:34
    venerdì 8 ottobre 2010 12:18
    Moderatore
  • Perfetto. grazie.

     

    venerdì 8 ottobre 2010 13:07