none
Gestire constraint "doppia" RRS feed

  • Domanda

  • Ciao a tutti,
    ho una tabella - TableA - con un FK verso la chiave primaria di un'altra tabella - TableFonteA.
    Si presenta ora il problema che dovrei fare degli inserimenti in questa tabella
    dove la FK è ora la PK di una terza tabella - TableFonteB.
    Succede, giustamente, che questa operazione non funziona, dato che non trova la PK nella TableFonteA.
    Vorrei evitare di eliminare la constraint sulla TableA.
    Come è possibile uscire da questo impasse?

    Grazie

    Luigi

    venerdì 8 febbraio 2013 08:49

Risposte

  • Buongiorno Ciupaz,

    puoi semplicemente disabilitarla temporaneamente finché esegui la tua operazione! Ecco il codice, mi ha tolto dagli impicci più di una volta.. (:

    -- Disabilita Constraint
    ALTER TABLE DB_Terreni NOCHECK CONSTRAINT ALL 
    
    -- Fai quel che vuoi
    UPDATE DB_Terreni 
    SET K_Terreno = REPLACE(K_TERRENO, 'DTE', 'TER')
    
    -- Abilita Constraint
    ALTER TABLE DB_Terreni CHECK CONSTRAINT ALL 

    Un saluto! 


    • Modificato _ Luca Gaspari venerdì 8 febbraio 2013 09:24
    • Contrassegnato come risposta Ciupaz venerdì 8 febbraio 2013 09:27
    venerdì 8 febbraio 2013 09:23

Tutte le risposte

  • Buongiorno Ciupaz,

    puoi semplicemente disabilitarla temporaneamente finché esegui la tua operazione! Ecco il codice, mi ha tolto dagli impicci più di una volta.. (:

    -- Disabilita Constraint
    ALTER TABLE DB_Terreni NOCHECK CONSTRAINT ALL 
    
    -- Fai quel che vuoi
    UPDATE DB_Terreni 
    SET K_Terreno = REPLACE(K_TERRENO, 'DTE', 'TER')
    
    -- Abilita Constraint
    ALTER TABLE DB_Terreni CHECK CONSTRAINT ALL 

    Un saluto! 


    • Modificato _ Luca Gaspari venerdì 8 febbraio 2013 09:24
    • Contrassegnato come risposta Ciupaz venerdì 8 febbraio 2013 09:27
    venerdì 8 febbraio 2013 09:23
  • Grazie Luca, può essere senz'altro una soluzione.

    Luigi

    venerdì 8 febbraio 2013 09:27
  • Di nulla, buon weekend! (:
    venerdì 8 febbraio 2013 09:28