Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2405 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Server 2000]Petite aide sur les procédures stockées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL Server 2000]Petite aide sur les procédures stockées

n°1499246
backdafuck​up
Back to da old skool
Posté le 05-01-2007 à 11:59:01  profilanswer
 

Bonjour,
 
Je n'y connais pas grand chose en procédures stockées, et j'aurais besoin d'un petit coup de main.
 
Le code n'est pas de moi (c'est de l'Open Source).
Il s'agit du code d'un forum, pour lequel j'ai un gros bug.
Pour la suppression, édition, création de forum on utilise des procédures stockées en sql, dont voici le code :  
 

Code :
  1. - sp_helptext forums_Forum_CreateUpdateDelete
  2. CREATE PROCEDURE forums_Forum_CreateUpdateDelete
  3. (
  4. @ForumID int out,
  5. @DeleteForum bit = 0,
  6. @Name  nvarchar(256) = '',
  7. @Description nvarchar(3000) = '',
  8. @ParentID int = 0,
  9. @ForumGroupID int = 0,
  10. @IsModerated bit = 1,
  11. @DisplayPostsOlderThan int = 0,
  12. @IsActive  bit = 0,
  13. @EnablePostStatistics bit = 1,
  14. @EnableAutoDelete bit = 0,
  15. @EnableAnonymousPosting bit = 0,
  16. @AutoDeleteThreshold int = 90,
  17. @SortOrder int = 0
  18. )
  19. AS
  20. -- Are we deleting the forum?
  21. IF @DeleteForum = 1
  22. BEGIN
  23. -- delete the specified forum and all of its posts
  24. -- first we must remove all the thread tracking rows
  25. DELETE
  26.  forums_TrackedThreads
  27. WHERE
  28.  ThreadID IN (SELECT DISTINCT ThreadID FROM forums_Threads WHERE ForumID = @ForumID)
  29. -- we must remove all of the moderators for this forum
  30. DELETE
  31.  forums_Moderators
  32. WHERE
  33.  ForumID = @ForumID
  34. -- now we must remove all of the posts
  35. DELETE
  36.  forums_Posts
  37. WHERE
  38.  ForumID = @ForumID
  39. -- finally we can delete the actual forum
  40. DELETE
  41.  forums_Forums
  42. WHERE
  43.  ForumID = @ForumID
  44. RETURN
  45. END


 
Le bug se situe au niveau du  

Code :
  1. DELETE
  2.  forums_Forums
  3. WHERE
  4.  ForumID = @ForumID


 
En fait, la suppression se passe très bien, mais il oublie que d'autres forums peuvent l'avoir en tant que parent (il y a un champ @ParentID).
 
Ce que je voudrais faire donc (ce dont j'ai besoin c'est une traduction en SQL (je crois que c'est du PL/SQL pour les stored procedures non ?) c'est
 
UPDATE forums_FORUMS SET ParentID = 0 WHERE ParentID = @ForumID
 
Ca marche comme ça ?
 
Merci d'avance.

mood
Publicité
Posté le 05-01-2007 à 11:59:01  profilanswer
 

n°1499263
MagicBuzz
Posté le 05-01-2007 à 12:25:02  profilanswer
 

oui, tu peux faire comme ça (ou avec NULL, ça dépends de la façon dont c'est géré).
tu peux aussi décider de supprimer en cascade les fils. à ce moment, tu ajoute (ou modifie) la FK parent->forumid de façon à faire les delete en cascade.

n°1499289
backdafuck​up
Back to da old skool
Posté le 05-01-2007 à 13:33:59  profilanswer
 

MagicBuzz a écrit :

oui, tu peux faire comme ça (ou avec NULL, ça dépends de la façon dont c'est géré).
tu peux aussi décider de supprimer en cascade les fils. à ce moment, tu ajoute (ou modifie) la FK parent->forumid de façon à faire les delete en cascade.


 
Je veux pas supprimer les fils, je veux juste supprimer le lien parent/enfant en fait.
 
Visiblement ma solution fonctionne, mais s'il y a plus propre ou plus pratique, je suis preneur :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Server 2000]Petite aide sur les procédures stockées

 

Sujets relatifs
Problème de requête SQL - PHP - mysqlTableau dynamique sous ASP.net (C# et SQL Server)
[PHP/SQL] Aide pour un siterm -rf en batch sur windows 2000?
Requetes sur table SQL mais pas sur clef primaire ==> doublons[SQL/Oracle] Transformer nombre jour en date
Manipulation de date avec SQL server et c# (site web) 
Plus de sujets relatifs à : [SQL Server 2000]Petite aide sur les procédures stockées


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR