Cancellare una Distinta Base

Forum dedicato interamente a Microsoft SQL Server

Moderatori: Toki, Rey, fonzarelli

Cancellare una Distinta Base

Messaggioda mtugnoli » 11 feb 2010, 15:22

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
mtugnoli
New Entry
 
Messaggi: 3
Iscritto il: 11 feb 2010, 15:20

Re: Cancellare una Distinta Base

Messaggioda Toki » 11 feb 2010, 16:23

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.
www.iprezzi.com - prima di acquistare online confronta i prezzi dei prodotti, risparmi e aiuti IProgrammatori.it

Hotel in Trentino Alto Adige: Hotel in Trentino
Avatar utente
Toki
Moderatore Supremo
 
Messaggi: 1096
Iscritto il: 28 gen 2001, 15:35

Re: Cancellare una Distinta Base

Messaggioda mtugnoli » 11 feb 2010, 16:56

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
mtugnoli
New Entry
 
Messaggi: 3
Iscritto il: 11 feb 2010, 15:20

Re: Cancellare una Distinta Base

Messaggioda mtugnoli » 11 feb 2010, 16:57

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
DisBas.JPG
Distinta Base
DisBas.JPG (36.9 KiB) Osservato 96 volte
mtugnoli
New Entry
 
Messaggi: 3
Iscritto il: 11 feb 2010, 15:20


Torna a SQL Server

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

IPROGRAMMATORI.IT 2010. Tutti i diritti riservati. - P.IVA 04135460873 | Pubblicità | Termini e Condizioni - Privacy Policy | RSS 2.0 - Le news di IProgrammatori.itRSS