251 messaggi dal 03 dicembre 2001
www.fuossbook.it
Ciao a tutti
devo fare un operazione per eliminare dei duplicati da una tabella che si chiama document

nella quale ho i seguenti elementi importanti
Id,Libelle,UserID,DossierId,Size
qui trovate un immagine
http://www.cyberkings.it/Stack/doc.jpg

La tabella a sua volta é collegata alla tabella AccesDocument che ID e DocumentId

questa a sua volta é collegata HistoriqueAccesDocumentche ha ID e AccesDocumentId

cosa devo fare io, eliminare dei duplicati dalla tabella document
Ho dei record duplicati che posso trovare andando a fare una select per verificare tutti quelli che hanno
Libelle,UserID e DossierId uguali
da questi poi voglio eliminare tutti quelli che hanno size 0

per fare questo avevo scritto questo

delete from Document WHERE  EXISTS (select Libelle from (SELECT Libelle,UserID,DossierId,ROW_NUMBER() OVER(PARTITION by Libelle,UserID,DossierId ORDER BY Libelle) 
AS duplicateRecCount
FROM dbo.Document
where UserID is not NULL and DossierId is not  NULL ) as TempTab1  where   Document.Libelle = TempTab1.Libelle and   Document.UserID = TempTab1.UserID and   Document.DossierId = TempTab1.DossierId  and duplicateRecCount > 1 ) and Size =0  


se la eseguo come select funziona tutto

delete AccesDocument
FROM            [Document]  INNER JOIN
                         AccesDocument ON [Document].Id = AccesDocument.DocumentId
WHERE        EXISTS
                             (SELECT        Libelle
                               FROM            (SELECT        Libelle, UserID, DossierId, ROW_NUMBER() OVER (PARTITION BY Libelle, UserID, DossierId
                                                         ORDER BY Libelle) AS duplicateRecCount
                               FROM            dbo.Document
                               WHERE        UserID IS NOT NULL AND DossierId IS NOT NULL) AS TempTab1
WHERE        Document.Libelle = TempTab1.Libelle AND Document.UserID = TempTab1.UserID AND Document.DossierId = TempTab1.DossierId AND duplicateRecCount > 1) AND Size = 0



ma la delete non va perchè la tabella AccesDocument la blocca

Sono quindi riuscito a fare una delete per cancellare anche AccesDocument ma questa a sua volta é bloccata da HistoriqueAccesDocumentche

ecco intanto non riesco ora a fare un delete su HistoriqueAccesDocumentche, ma più che altro vorrei dare u n ordine alle cose anche per evitare che una delete finisca prima e blocchi poi il resto

***************************
webmaster di:
hydrasail.blogspot.it
fuossbook.it
***************************
258 messaggi dal 13 novembre 2009
Devi iniziare dall’ultima a risalire tutto sotto transazione
Begin trans delete delete delete commit

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.