Cancellare una Distinta Base

di il
3 risposte

Cancellare una Distinta Base

Salve,

Ho una classica tabella di distinta base ad albero, con IDPAD,IDFIG,QTA

ho la necessita' di fare una StoredProcedure che mi elimina tutti i legami di un dato codice.

Ho provato con un trigger ma SQL Server sembra che dia errore dopo n. livelli di cascade,

Qualcuno ha' una buona idea ?


Grazie


Marco

3 Risposte

  • Re: Cancellare una Distinta Base

    Ciao, non so se ho bene capito la tua domanda.
    Se hai una tabella master con relazioni in altre tabelle e con vincolo di integrità referenziale, puoi settare l'eliminazione in cascata (automatica).
    Cosi facendo quando elimini il record della tabella master, vengono eliminati anche quelli delle tabelle correlate.

    Fammi sapere se é quello di cui avevi bisogno, ciao.
  • Re: Cancellare una Distinta Base

    No, la tabella e' una sola

    i dati sono tipo questi :

    IDPAD(pk) IDFIG(pk) QTA
    0 1 1
    1 2 1
    1 3 1
    3 4 1
    0 5 1
    5 6 1
    ecc.

    visto ad albero

    0
    |_ 1
    |_2
    |_3
    |_4
    5
    |_6


    Questa e' una tipica distinta base ad albero dove
    l'articolo con cod. 1 e' composto dagli art. 2,3 e dove l'articolo 3 e' composto dall'articolo 4


    Ora il mio problema e' che una volta eliminato il record con pk (0,1)
    si devono eliminare tutti i figli in cascata....
    (1,2)
    (1,3)
    (3,4)

    Ho provato ad inserire un trigger DELETE in cascata
    dove eliminava tutti i record con IDPAD = al IDFIG del record eliminato
    ma mi da' un errore dicendo che SQL Server non permette un CASCADE oltre i 5 livelli !!!


    Vorrei fare una store procedure che mi crea una tabella bemporanea con tutte le pk di tutto l'albero che mi interessa per poi eliminare un record alla volta,
    ma per fare questo bisognerebbe fare un qualcosa di ricorsivo e non so' come fare

    Non so se sono riuscito a farti capire....

    Hai idee ?

    Grazie
  • Re: Cancellare una Distinta Base

    Cavolacci !!! non si vede bene la mia formattazione !!!

    In allegato puoi vedere una schermata di una mia Distinta...

    In questo caso nel db ci sara'

    IDPAD|IDFIG|QTA
    0|1.ASP.00006|1
    1.ASP.00006|1.ASP.00002|1
    1.ASP.00002|2.00000220|1
    1.ASP.00002|2.00000221|1

    ecc
    Allegati:
    Distinta Base
    Distinta Base
Devi accedere o registrarti per scrivere nel forum
3 risposte